<jsp:setProperty> działa dopiero po dwukrotnym przeładowaniu

0

Witam Wszystkich serdecznie!
Mam problem z pewnym zadaniem, otóż mam do zrobienia aplikację webową w technologii jsp z użyciem wyłącznie <jsp:useBean ... />,
<jsp:setParameter ... />., <jsp:getParameter ... />. oraz ewentualnie <%=wyrażenie%>. Mam 3 problemy:

  1. Przy wyborze czegokolwiek z listy rozwijalnej(koloru), jest on stosowany/rozpoznawany dopiero po dwukrotnym przeładowaniu strony
  2. Ten sam błąd występuje podczas kliknięcia 1 z 2 przycisków, również muszę przeładować dwukrotnie stronę, aby zatwierdzić mój wybór
  3. Czy da się jakoś zablokować, żeby <%=wyrażenie%> nie było wykonywane przy każdym odświeżeniu strony, tylko np przy kliknięciu określonego przycisku?

Oto plik .jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="kolo" class="wcy.Kolka" scope="session"></jsp:useBean>
<div align="left">

<form method="get" action="<%kolo.wyznaczKolor(); %>">

<label>Podaj X</label>
<input type="text" name="DajX"/>
<jsp:setProperty property="x" name="kolo" param="DajX"/>

<label>Podaj Y</label>
<input type="text" name="DajY"/>
<jsp:setProperty property="y" name="kolo" param="DajY"/>

<label>Podaj Promień</label>
<input type="text" name="DajPromien"/>
<jsp:setProperty property="promien" name="kolo" param="DajPromien"/>

<label>Czy wypełnione?</label>
<input type="radio" name="DajCzyPelne" value="y" checked="checked" >Wypełnione
<input type="radio" name="DajCzyPelne" value="n">Nie wypełnione
<jsp:setProperty property="czyPelne" name="kolo" param="DajCzyPelne" />

<input type="submit" name="btn" value="Rysuj"> 
<input type="submit" name="btn" value="Wyczysc" > 
<jsp:setProperty property="btn" name="kolo" param="btn"/>

<select name="kolor"  >
<option label="Czerwone" value="1" selected="selected"/>
<option label="Zielone" value="2" />
<option label="Niebieskie" value="3" />
<option label="Żółte" value="4" />
<option label="Fioletowe" value="5"/>
<option label="Błękitne" value="6" />
<jsp:setProperty property="kolor" name="kolo" param="kolor"/>
</select>

</form>
</div>

<img alt="Nic" src="<%=kolo.getObraz() %>" align="right">


</body>
</html>

oraz mój bean:

package wcy;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


public class Kolka {
	
	int x,y, promien,kolor;
	String pelne, czyPelne, obraz, btn="Rysuj";
	Color c;
	boolean b;

	public String getObraz(){return obraz;}
	
	public String getBtn(){return btn;}
	public void setBtn(String btn){this.btn=btn;}
	
	public int getX(){return x;}
	public void setX(int x){this.x=x;}
	
	public int getY(){return y;}
	public void setY(int y){this.y=y;}
	
	public int getPromien(){return promien;}
	public void setPromien(int promien){this.promien=promien;}
	
	public void setCzyPelne(String czyPelne){
		if(czyPelne.equalsIgnoreCase("y"))b=true;
		else b=false;
		this.czyPelne=czyPelne;}
	public String getCzyPelne(){return czyPelne;}
	
	public int getKolor(){return kolor;}
	public void setKolor(int kolor){this.kolor=kolor;}
	
	
	
	public void wyznaczKolor(){
	
		try{
		rysuj(getX(),getY(),getPromien(),this.c,b);
		System.out.println(this.kolor+"|"+getKolor()+"|"+this.btn);
		}
		catch(IOException e){/*przekierowanie do strony z bledem*/}
		catch(Exception en){/*przekierowanie do strony z bledem*/}
	}
	
	public void rysuj(int x,int y, int promien, Color c, boolean czyPelne) throws IOException{
		BufferedImage image=new BufferedImage(600, 600, BufferedImage.TYPE_INT_RGB );
		File file=new File("obraz.png");
		obraz=file.getAbsolutePath();
		int a=getKolor();
		switch(a){
		case 1:c=Color.RED;break;
		case 2:c=Color.GREEN;break;
		case 3:c=Color.BLUE;break;
		case 4:c=Color.YELLOW;break;
		case 5:c=Color.MAGENTA;break;
		case 6:c=Color.CYAN;break;
		}
		
		System.out.println(obraz);
		if(file.exists())image=ImageIO.read(file);
		Graphics graphic=image.createGraphics();
		graphic.setColor(c);
		if(czyPelne==true)graphic.fillOval(x, y, promien*2, promien*2);
		else graphic.drawOval(x, y, promien*2, promien*2);
		ImageIO.write(image, "png", file);
		
		}

}

Z góry bardzo dziękuje za wszelką pomoc

P.S. To mój pierwszy wpis na forum

0

Problem rozwiązany, temat do zakmnięcia

1 użytkowników online, w tym zalogowanych: 0, gości: 1