You are not logged in.

  • Login

1

Thursday, February 1st 2007, 2:28pm

Servlet: Checkboxen überprüfen

Hi!

Ich habe folgendes Servlet erstellt und bekomm es einfach nicht hin, zu prüfen, ob die Checkboxen true oder false sind. Problem ist, dass es sich um Checkboxen in HTML handelt und ich sie in Java auslesen möchte. Aber vielleicht ist das auch gar kein Problem...oder es geht gar nicht! ;-) Auf jeden Fall habe ich schon ewig gegooglet und nix gefunden.

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class InputServlet extends HttpServlet {
 
	public static Request req = new Request();
	public static ArrayList list = new ArrayList();
	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doGet(HttpServletRequest _request, HttpServletResponse arg1)
			throws ServletException, IOException {
 
		arg1.getOutputStream().println("<html>");
		arg1.getOutputStream().println("<head>");
		arg1.getOutputStream().println("<title>Input</title>");
		arg1.getOutputStream().println("</head>");
		arg1.getOutputStream().println("<body>");
		arg1.getOutputStream().println("<form action='input' name='input'></br>");
		arg1.getOutputStream().println("<table border='0'>");
		arg1.getOutputStream().println("<tr><td>ID:</td><td><input type='text' name='id'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Predecessor:</td><td><input type='text' name='predecessor'></td></tr>");
		arg1.getOutputStream().println("<tr><td>State:</td><td><input type='text' name='state'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Phase:</td><td><input type='text' name='phase'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Preparing:</td><td><input type='checkbox' name='preparing'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Processing:</td><td><input type='checkbox' name='processing'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Finishing:</td><td><input type='checkbox' name='finishing'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Closing:</td><td><input type='checkbox' name='closing'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Priority:</td><td><input type='text' name='priority'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Associative Name:</td><td><input type='text' name='associativename'></td></tr>");
		arg1.getOutputStream().println("<tr><td></td><td><input type='submit' value='Send'></td></tr>");
		arg1.getOutputStream().println("</table>");
		arg1.getOutputStream().println("</form>");
		arg1.getOutputStream().println("</body>");
		arg1.getOutputStream().println("</html>");
 
		if (_request.getParameterMap().size() != 0) {
			req.setId(_request.getParameter("id"));
			list.add(req.getId());
			req.setPredecessor(_request.getParameter("predecessor"));
			list.add(req.getPredecessor());
			req.setState(_request.getParameter("state"));
			list.add(req.getState());
			req.setPhase(_request.getParameter("phase"));
			list.add(req.getPhase());
			req.setPreparing(_request.isSecure());
			req.setProcessing(_request.isSecure());
			req.setFinishing(_request.isSecure());
			req.setClosing(_request.isSecure());
			req.setPriority(_request.getParameter("priority"));
			list.add(req.getPriority());
			req.setAssociativename(_request.getParameter("associativename"));
			list.add(req.getAssociativename());
		}
 
	}
}


Vielen Dank im Voraus für eure Hilfe!

Gruß
Rantan

2

Thursday, February 1st 2007, 5:11pm

Hi,

das Auslesen sollte kein Problem darstellen.
Was erhältst du denn, wenn du folgendes ausgibst?

Java Quellcode

1
_request.getParameter("preparing")


So sähe der Boolean dazu aus:

Java Quellcode

1
Boolean available = Boolean.valueOf(_request.getParameter("preparing"));

3

Friday, February 2nd 2007, 9:20am

Moin moin

Checkboxen in HTML ein ganz tolle Sache sag ich dir. Schlag mich auch aktuell damit rum. Benutze aber für den Zugriff auf Formulre Struts. Macht vieles leichter und besser lesbar ;)

Kurze erläuterung, warum das ganze nicht ganz so einfach ist, wie man vielleicht denkt:
Checkboxen können verständlicherweise nur true oder false sein.
Dummerweise wird nur true bei submit mit übertragen.
Wenn also eine Checkbox nicht ausgewählt wurde, sieht es für das Programm so aus, als würde dein Formular überhaupt keine Checkbox besitzen.

Als Lösung würde ich vorschlagen, anzunehmen die Checkbox ist "false" und nur auf "true" zu setzen, wenn auch "true" übertragen wird.

Hoffe es hilft

4

Friday, February 2nd 2007, 9:26am

Hi! Erstmal vielen Dank für die Antwort!

Die erste Möglichkeit hatte ich schon ausprobiert, das mag er aber nicht, weil das keine String is. Das Problem, dass ich jetzt habe ist immernoch, dass er die Checkbox nicht ausliest. Das heißt, dass der Status immer auf false steht. Und das ganze soll von einer Methode gemacht werden, die ich allerdings vergessen habe zu posten.
Also werde ich das mal eben nachholen.

Das bisher bekannte ist die Klasse InputServlet. Diese ist in einem HttpServlet mit dem gleichen Namen. Ich poste sie hier nochmal der Vollständigkeit halber:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class InputServlet extends HttpServlet {
 
	public static ArrayList list = new ArrayList();
	/* (non-Javadoc)
	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
	 */
	protected void doGet(HttpServletRequest _request, HttpServletResponse arg1)
			throws ServletException, IOException {
 
		arg1.getOutputStream().println("<html>");
		arg1.getOutputStream().println("<head>");
		arg1.getOutputStream().println("<title>Input</title>");
		arg1.getOutputStream().println("</head>");
		arg1.getOutputStream().println("<body>");
		arg1.getOutputStream().println("<form action='input' name='input'></br>");
		arg1.getOutputStream().println("<table border='0'>");
		arg1.getOutputStream().println("<tr><td>ID:</td><td><input type='text' name='id'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Predecessor:</td><td><input type='text' name='predecessor'></td></tr>");
		arg1.getOutputStream().println("<tr><td>State:</td><td><input type='text' name='state'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Phase:</td><td><input type='text' name='phase'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Preparing:</td><td><input type='checkbox' name='preparing' value='true'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Processing:</td><td><input type='checkbox' name='processing' value='true'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Finishing:</td><td><input type='checkbox' name='finishing' value='true'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Closing:</td><td><input type='checkbox' name='closing' value='true'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Priority:</td><td><input type='text' name='priority'></td></tr>");
		arg1.getOutputStream().println("<tr><td>Associative Name:</td><td><input type='text' name='associativename'></td></tr>");
		arg1.getOutputStream().println("<tr><td></td><td><input type='submit' value='Send'></td></tr>");
		arg1.getOutputStream().println("</table>");
		arg1.getOutputStream().println("</form>");
		arg1.getOutputStream().println("</body>");
		arg1.getOutputStream().println("</html>");
 
		if (_request.getParameterMap().size() != 0) {
			Request req = new Request();
			req.setId(_request.getParameter("id"));
			req.setPredecessor(_request.getParameter("predecessor"));
			req.setState(_request.getParameter("state"));
			req.setPhase(_request.getParameter("phase"));
			req.setPreparing(_request.getParameter("preparing"));
			req.setProcessing(_request.isSecure());
			req.setFinishing(_request.isSecure());
			req.setClosing(_request.isSecure());
			req.setPriority(_request.getParameter("priority"));
			req.setAssociativename(_request.getParameter("associativename"));
			list.add(req);
		}
 
	}
}


Bei req.setPreparing hat er jetzt folgendes Problem: "The method setPreparing(boolean) in the type Request is not applicable for the arguments (String)".

Dazu die Klasse Request, die die Methode enthält. Ich lass hier den ganzen Mittelteil mal aus:

Java Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Request {
 
	private String id;
	private String predecessor;
	private String state;
	private String phase;
	private boolean preparing;
	private boolean processing;
	private boolean finishing;
	private boolean closing;
	private String priority;
	private String associativename;
	private ArrayList inputProducts = new ArrayList();
	private ArrayList outputProducts = new ArrayList();
	private ArrayList features = new ArrayList();
 
[...]
 
/**
	 * @return Returns the preparing.
	 */
	public boolean isPreparing() {
		return preparing;
	}
	/**
	 * @param preparing The preparing to set.
	 */
	public void setPreparing(boolean preparing) {
		this.preparing = preparing;
	}


Hier muss also irgendwie der Bezug zur Checkbox fehlen, was an sich ja offensichtlich ist, weil sie nicht genannt wird. Aber ich weiß nicht, wie ich sie da reinkriegen soll. Dazu muss ich sagen, dass das laut Aufgabenstellung möglichst mit der Methode gemacht werden soll, um später noch darauf aufzubauen.

Gruß Rantan

5

Monday, February 5th 2007, 3:41pm

Moin moin

Hängst du immernoch an dem Problem?
Aufgefallen, dass du versuchst von String nach boolean zu casten?
würde empfehlen

absicht

Java Quellcode

1
2
3
4
5
6
if(_request.getParameter("preparing") != null && _request.getParameter("preparing").equals("true")){
                    	req.setPreparing(true);
                    }
                    else{
                    	req.setPreparing(false);
                    }


Nächste frage wäre natürlich, was willst du überhaupt machen??
Dein Formular, dass du ausgibst, ist nicht dynamisch. Ich hoffe das ist absicht.

Mfg

Similar threads

Social bookmarks