2011-11-03 48 views
1

我有網頁,有這樣一種形式:使用來自Java Bean和JSP的屬性填充HTML表單?

<html> 
<head> 
    ... 
</head> 
<body> 
<form id="form4" name="form4" method="post" action="Receive.jsp"> 
    <input name="inputField1" type="text"/> 
    ... 
    <input type="submit" value="Send"/> 
</form> 
</body> 

</html> 

然後在我的Receive.jsp我使用:

<jsp:useBean id="form4" class="control.FormBean4" scope="session"/> 
<jsp:setProperty name="form4" property="*"/> 

要想從表格中的所有數據輸入到一個Bean,然後我做一些東西用它。現在,我想要做的是將Bean中的數據重定向到另一個JSP中,並使用另一個表單中的屬性填寫該表單的輸入字段。我的問題是,是否有某種方法可以自動填寫表格<jsp:setProperty name="form4" property="*"/>但向後?

我已經試過<jsp:getProperty name="form4" property="*"/>,但它顯然沒有工作(我在JSP引用中的某處讀到這是無效的),所以我想知道你是否知道某種方式來做到這一點,因爲我有更多隻有一個形式,每個都有一堆字段,我想保存所有設置值的工作。

我仍然是JSP的新手,並且不太瞭解JSTL或Struts等任何框架,任何幫助都將不勝感激。

回答

1

我的問題是,如果有一種方法可以自動填寫表格,如<jsp:setProperty name="form4" property="*"/>但是向後?

號你需要要麼自己做,或前往基於JSF一樣,Struts的,春天-MVC等MVC框架

自己做一個JSP/Servlet的:

<input type="text" name="textName" value="${fn:escapeXml(bean.textName)}" /> 
<select name="dropdownName"> 
    <c:forEach items="${bean.dropdownOptions}" var="dropdownOption"> 
    <option value="${dropdownOption.key}" ${bean.dropdownName == dropdownOption.key ? 'selected' : ''}>${dropdownOption.value}</option> 
    </c:forEach> 
</select> 
<c:forEach items="${bean.checkboxOptions}" var="checkboxOption"> 
    <c:forEach items="${bean.checkboxName}" var="checkboxName"> 
    <c:if test="${checkboxName == checkboxOption.key}"> 
     <c:set var="checked" value="true" /> 
    </c:if> 
    </c:forEach> 
    <input type="checkbox" name="checkboxName" value="${checkboxOption.key}" ${checked ? 'checked' : ''}>${checkboxoption.value}<br/> 
</c:forEach> 

若要例如JSF做到這一點:

<h:inputText value="#{bean.textName}" /> 
<h:selectOneMenu value="#{bean.dropdownName}"> 
    <f:selectItems value="#{bean.dropdownOptions}" /> 
</h:selectOneMenu> 
<h:selectManyCheckbox value="#{bean.checkboxName}"> 
    <f:selectItems value="#{bean.checkboxOptions}" /> 
</h:selectManyCheckbox> 

(這反過來也立即最小化<jsp:useBean>和所有Servlet代碼模板)

+0

感謝您的回答!特別提醒使用'$ {fn:escapeXml(bean.textName)}',我的文本都沒有使用它! – David

+0

不客氣。當您重新顯示用戶控制的數據時,確實非常重要,因爲它可以防止XSS攻擊。 – BalusC