【问题标题】:Retaining form values for dropdown为下拉菜单保留表单值
【发布时间】:2013-10-26 14:31:41
【问题描述】:

下面是我的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>

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.

【问题讨论】:

    标签: javascript jsp dom-events struts


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 2016-09-24
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 1970-01-01
      相关资源
      最近更新 更多