Мне нужно получить 2 номера и операцию из файла jsp, используя java bean. После отправки чисел, переведите их в сервлет из этого Java-компонента и верните результат из них. Проблема в том, что поля java bean никогда не заполняются цифрами, написанными в текстовых окнах. Итак, у меня есть, тело index.jsp в:Javabeans с jsp: useBean. Как они работают? Я не понимаю
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<h1>Calculator</h1>
<FORM METHOD="POST" action="Controller">
N1: <input type ="text" name="nr1" value="0">
op: <input type ="text" name="op" value="+">
N2: <input type ="text" name="nr2" value="0">
<INPUT class ="button" TYPE="submit" NAME="actiune" VALUE="Calculate"/>
</FORM>
<jsp:useBean id="binOp" class="beans.BinaryOperation" scope="session"/>
<jsp:setProperty name="binOp" property="*"/>
</body>
метод сервлета ProcessRequest, Controller.java, помещенный в пакет сервлетов:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession(true);
BinaryOperation binOp = (BinaryOperation) session.getAttribute("binOp");
try {
if (!binOp.isComplete()) {
System.out.println(binOp.getNr1() + binOp.getNr2() + binOp.getOp());
response.sendRedirect("index.jsp");
} else {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet Controller</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Bean in controller " + binOp.getNr1() + "__" + binOp.getOp() + "__" + binOp.getNr2() + "</h1>");
out.println(binOp.toString());
out.println("</body>");
out.println("</html>");
}
} finally {
out.close();
}
}
И фасоль, BinaryOperation, помещенный в упаковке фасоли:
package beans;
public class BinaryOperation {
private String nr1;
private String op;
private String nr2;
public void setNr1(String nr1) {
this.nr1 = nr1;
}
public void setOp(String op) {
this.op = op;
}
public void setNr2(String nr2) {
this.nr2 = nr2;
}
public String getNr1() {
return nr1;
}
public String getOp() {
return op;
}
public String getNr2() {
return nr2;
}
public boolean isComplete() {
return !(((nr1 == null) || (nr1.length() == 0))
|| ((op == null) || (op.length() == 0))
|| ((nr2 == null) || (nr2.length() == 0)));
}
}
В журнале Apache у меня есть nex т выход из, если заявление (см сервлет - System.out.println (binOp.getNr1() + binOp.getNr2() + binOp.getOp());): nullnullnull
Где моя ошибка?
Когда вы регистрировали значения в сервлет, прямо перед ключевым словом 'try', были ли установлены значения? То есть, можете ли вы проверить, какие введенные значения попадают в сервлет? Я вообще, но эти вещи в объекте Request, кстати. –
Можете ли вы объяснить мне, как значение в '' попадает в bean-компонент? –
@Tony Ennis: Как вы можете видеть, я пытаюсь взять компонент из сеанса запроса. – m88