jsp useBean ist NULL von getAttribute von servlet
user gleich null ist in der servlet. Bitte lassen Sie mich, wenn dabei Fehler.
ich m versuchen, um alle html-element-bean rateCode.jsp
<%@page import="com.hermes.data.RateCode_" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Rate Code</title>
</head>
<body>
<jsp:useBean id="user" class="com.hermes.data.RateCode_" scope="request" >
<jsp:setProperty name="user" property="*"/></jsp:useBean>
<form id="f_rateCode" action="/ratePromoCodes" method="post" >
<table align="center" border="1" cellspacing="0">
<tr>
<td colspan="2" align="center" class="header">Rate Code Administrations</td>
</tr>
<tr>
<td align="right" style="border-style: solid;">Rate Code:</td>
<td align="left" style="border-style: solid;">
<input type="text" id="code" name="code" value="${user.code}" size="10" maxlength="32" style="width: 100px"/>
</td>
</tr>
<tr>
<td align="right" style="border-style: solid;">Rate Description:</td>
<td align="left" style="border-style: solid;">
<input type="text" id="description" name="description" value="<%=user.getDescription()%>" maxlength="128" size="40"></td>
</tr>
<tr><td><input type="submit" value="ok" /></td> </tr>
</table>
</form>
Servlet - ratePromoCodes
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
RateCode_ rc = (RateCode_) req.getAttribute("user");
Enumeration an = req.getAttributeNames();
Enumeration pn = req.getParameterNames();
Object o = null;
while (an.hasMoreElements()) {
o = an.nextElement();
System.out.println(o);
}
while (pn.hasMoreElements()) {
o = pn.nextElement();
System.out.println(o);
}
}
RateCode.java (javaBean)
public class RateCode_ {
private String code ;
private String description;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
InformationsquelleAutor Ravi Parekh | 2011-02-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du scheinst zu missverstehen die Arbeit und den Zweck von
jsp:useBean
.Zunächst, Sie habe erklärt, die Bohnen werden in den session-scope und Sie Befüllen es mit allen Parameter der aktuellen Anfrage.
Diese Bohne ist so gespeichert, wie Sitzung Attribut mit dem Namen
user
. Sie müssen abrufen, die es in der servlet-Sitzungs-Attribut, nicht als request-Attribut.(
user
ist eine schreckliche und verwirrend Attribut name übrigens, ich würde es umbenennenrateCode
oder etwas, ohne dieses seltsame_
am Ende)Jedoch, es werde die nichts enthalten. Die
getCode()
undgetDescription()
zurücknull
. Die<jsp:setProperty>
hat nämlich nicht füllte es mit aller request-Parameter noch an diesem Punkt, den Sie versuchen, Zugriff im servlet. Wird es das nur tun, wenn Sie uns die Anfrage mit dem Parameter wieder auf die JSP-Seite. Aber dies geschieht über die business-Logik in der servlet.Müssen Sie zu sammeln, Sie als request-Parameter selbst. Erste loszuwerden der ganze
<jsp:useBean>
Sache in der JSP und wie folgt in das servlet istdoPost()
Methode:und dann können Sie es in der JSP wie folgt:
(dies ist nur empfindlich auf XSS-Angriffe, die Sie installieren möchten, JSTL und verwenden
fn:escapeXml
)Nein, Sie tun nicht müssen
<jsp:useBean>
im JSP. Halten Sie es aus, es hat praktisch keinen Wert, wenn Sie auf dem MVC (Stufe 2) Ansatz mit realen servlets. Die<jsp:useBean>
ist nur nützlich für MV design (MVC level 1). Speichern Sie boilerplate-code zu sammeln request-Parameter, sollten Sie erwägen, ein MVC-framework oder Apache Commons BeanUtils. Siehe auch unten-links für Hinweise.Siehe auch:
action="forward.jsp"
vorwärts.jsp<jsp:useBean id="user" class="com.data.RateCode" scope="request"/> <jsp:setProperty name="user" property="*" /> <jsp:forward page="/code" />
und ich bekomme esRateCode_ user = request.getAttribute("rateCode")
aber zum Auffüllen der Bohnen RateCode ohne eine weitere jsp-Datei (forward.jsp), damit ich nicht haben, um getParameter one-by-one, gerade wie wir tun, Streben. ich habe nur verwenden, JSP, servlet.Wie bereits in der Antwort, nicht mit
jsp:useBean
. Füllen Sie es in das servlet.aber wie? wie Sie sagte.
req.getParameter("code")
gibt es eine Möglichkeit zum Auffüllen in bean b'coz ich habe so viele input-Felder in jsp. Thanx für u r-Unterstützung.Nein, es funktioniert in beide. Aber es macht keinen Sinn, wenn Sie mit servlets. Es ist hilfreich, im basic - /starter-servletless JSP-nur webapps. Sie brauchen nur zu verstehen, deren Lebenszyklus. Es bietet keine Möglichkeit zur Steuerung der Anfrage - /Antwort. Nur pre - /postprocessing der Daten und nichts anderes. Sie konnte hack in eine get-Methode, die die business-action-Methode auf und gibt das Ergebnis zurück, aber das ist hässlich. Ein servlet bietet Ihnen eine saubere Art und Weise zu Steuern, request/response und aufrufen von Aktionen. Wenn Ihre einzige Absicht ist es, das Auffüllen der Bohnen in einen servlet-Container, check-commons-BeanUtils oder nur mit einem MVC-framework wie JSF.
siehe auch: stackoverflow.com/questions/5096454/... und stackoverflow.com/questions/3541077/...
InformationsquelleAutor BalusC
Das problem (und seine Lösung) ist wie folgt:
Erstellen Sie eine request-scope-bean
user
aber sobald die Seite geladen wird, die Anfrage ist fertig und gegangen - kein Wunder, es istnull
bei der nächsten Anfrage, das ist völlig unabhängig von dieser. Was Sie wohl tun wollte, ist die folgende:1) Entfernen Sie die
<jsp:useBean ...>
von Ihrem jsp-Seite komplett, so wird es wie folgt Aussehen:2) das Formular nun leitet zu einer anderen jsp ein, kann der Spediteur. Es sieht aus wie folgt:
Was das bedeutet: es wird die bean im request scope - die Anforderung, welche der eingereichten form. Dann füllt es die bean-Eigenschaften mit den Daten aus dem Formular und schließlich nach vorn (IN der GLEICHEN ANFRAGE, HIER IST DER PUNKT), um das servlet, das macht einige Arbeit.
3) Endlich etwas in Ihrem servlet, habe ich diese für Testzwecke:
scope="session" auch NULL ist, während er in der SITZUNG.
Der Punkt ist, dass, wenn Sie möchten, dass die Bohnen haben Eigenschaften richten sich nach dem Formular eingegebenen Werte, die Sie anrufen müssen, <jsp:useBean>, NACHDEM das Formular abgesendet wurde. Es funktioniert mit session-scope, wenn Sie gehen direkt in die Servlet-ABER 1) müssen Sie beantragen.getSession().getAttribute("user") 2) Beachten Sie, dass, wenn man die <jsp:useBean> in Ihrer form-Seite die bean wird versuchen, aufgefüllt auf die Seite laden, wenn das Formular leer ist. So wie das Ergebnis der bean wird nicht in null, in das servlet aber die Eigenschaften nicht festgelegt.
ja u r Recht, ich habe versucht, diese Anforderung.getSession().getAttribute("user") fand ich "user" aber auch die Werte von code & Beschreibung NULL ist
für diese haben wir eine andere hinzufügen jsp für vorne für jede Seite und wenn die Validierung Fehler kommt alle html-Formular wird leer sein und der Benutzer haben, um es zu füllen wieder. so ist Ihr eine Möglichkeit, um es besiedelt in der gleichen jsp. hier ist der link, aber mit Hilfe der vorwärts-und anderen jsp. [link] javaworld.com/jw-03-2000/jw-0331-ssj-forms.html?page=3
InformationsquelleAutor Jan Zyka
Sie sind mit einer request-scoped bean in einer JSP. Diese JSP wird vorgelegt und ein Servlet reagiert.
Wenn das Servlet ausgeführt wird, eine neue "life-cycle" beginnt und der request-scope enthält keine request-scoped bean verwendet/erstellt in der JSP.
Du Einreichen musst die bean-Eigenschaften als request-Parameter, und Lesen Sie Sie ein-by-one in der servlet.
InformationsquelleAutor frm