0

下面是我的jsp,

我有一个填充有<option>标签的下拉列表。这里我的值是从 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>

测试动作.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.
4

1 回答 1

0

为什么不使用 struts 逻辑标签?您在 jsp 中使用 bean 和 scriptlet 来填充您的选择标记。我的建议是将您testIdValue的设置为操作表单(setter 属性)或会话属性(最好使用操作表单)而不是请求。使用逻辑迭代来填充您的选择标签和逻辑存在标签,以检查您的值是否存在于该列表中。如果是这样,请执行您的 html 内容,例如selected="selected". 代码片段如下,

<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标签。让我知道这是否有帮助。

于 2013-10-26T19:49:22.223 回答