以下是我的jsp,
我有一个填充了tag的下拉列表。我的值是从java bean填充的。下拉值是动态填充的。我使用的框架是struts 1.3。
MyJSP.jsp
<%
String testIdValue = request.getAttribute("testIdValue");
%>
<body>
<html:select property="testId" id="format">
<option value="0">Select a TestId</option>
<option value="<%=Mybean.getname()+"^"+Mybean.getdata()%>"<%=(Mybean.getname()+"^"+Mybean.getdata())?"selected=true":""%>><%=Mybean.getname()></option>
</option>
</html:select>
<input type="button" value="submit"/>
</body>
的struts-config.xml
<action path="/test"
type="com.test.TestAction"
name="testForm" scope="request" validate="true"
input="/MyJSP.jsp">
<forward name="success" path="/MyJSPResult.jsp"/>
<forward name="failure" path="/MyJSP.jsp"/>
</action>
TestAction.java
public ActionForward execute(ActionMapping mapping, ActionForm form,....)
{
TestForm testform = (TestForm) from;
String testIdValue= request.getParameter("testId");
request.setAttribute("testIdValue",testIdValue);
}
MyJSPResult.jsp
<%
String testIdValue = request.getAttribute("testIdValue");
%>
这里每当我点击提交时,点击下拉框值保留的第一个选项的任何验证,即“选择一个TestId”。提交动作后,我可以在TestAction中获取表单值。之后我在请求对象中设置值。我无法检索MyJSP.jsp或MyJSPResult.jsp这些值。
在这种情况下,有人可以告诉我如何保留我的下拉值或一般表格值吗?
我想要的是:在
之后反映的所选下拉值submiting jsp->action->results page->coming back to jsp or
submiting jsp->action->hitting valiadtion->coming back to jsp.
提前致谢。
答案 0 :(得分:0)
为什么不使用struts逻辑标签?您在jsp中使用bean和scriptlet来填充select标记。我的建议是将testIdValue
设置为操作表单(setter属性)或会话属性(最好采用操作表单)而不是请求。使用逻辑迭代来填充您的选择标记和逻辑当前标记,以检查您的值是否存在于该列表中。如果是这样,请使用selected="selected"
这样的html内容。代码片段如下,
<html:select property="testId" id="format" name="your_action_form">
<option value="0">Select a TestId</option>
<logic:iterate property="your_list_property" name="your_action_form">
<logic:present name="testIdValue" property="testId">
<option value="your_value" selected="selected">your_text</option>
</logic:present>
<logic:notPresent name="testIdValue" property="testId">
<option value="your_value">your_text</option>
</logic:notPresent>
</logic:iterate>
</html:select>
此外,您可以使用逻辑equal/notEqual
代码而不是present/notPresent
代码。如果这有帮助,请告诉我。