更新会话后,<select>标记中的值重复

时间:2016-03-28 13:39:36

标签: java jsp session jstl

传播我的jstl标记的代码&lt; forEach&gt;在jsp页面上: &LT;选择&GT;     &lt; c:if test =“$ {!empty codeofcountries}”&gt;       &lt; c:forEach var =“codecoun”items =“$ {codeofcountries}”&gt;             &lt; option value =“$ {codecoun.kods}”&gt; $ {codecoun}&lt; / option&gt;       &LT; / C:的forEach&GT;   &LT; / C:如果&GT; &LT; /选择&GT; 我的控制器: public void doView(RenderRequest request,RenderResponse response)抛出PortletException,IOException {         response.setContentType(request.getResponseContentType());         PPUZ_NDI_MNS_ENEEPortletSessionBean sessionBean = getSessionBean(request);         if(sessionBean == null){             response.getWriter()。println(“&lt; b&gt; NO PORTLET SESSION YET&lt; / b&gt;”);             返回;         }         sessionBean.setDefaultInfoText();         String jsp = Start_JSP;         switch(sessionBean.getMode()){             案例开始:                 jsp = Start_JSP;                 打破;             案例主要:                 jsp = Main_JSP;                 打破;             案例创作:             案例编辑:             案例复制:                 jsp = CreatEdit_JSP;         }         request.setAttribute(“codeofcountries”,sessionBean.getKodNameList());         PortletRequestDispatcher rd = getPortletContext()。getRequestDispatcher(getJspFilePath(request,jsp));         rd.include(请求,回复); 当我进入portlet所有处理得很好时,列表将从数组中生成并显示在标记&lt; select&gt;中因为我需要。但是当我在门户网站上重新启动会话时,标记(select)的值在jsp页面上重复。不要将前一个值保留在标记(选择)中,并再次添加相同的列表。

3 个答案:

答案 0 :(得分:0)

从代码中,似乎值被添加到sessionBean.getKodNameList()引用的列表中,导致重复值。

为了防止这种情况,我建议调试代码并检查值的添加位置。但是,为了快速解决问题,您可以equals使用unmodifiableList或设置(在课程的相应课程中实施hashCodeKodNameList方法)。

答案 1 :(得分:0)

codeofcountries中的变量是获取所有getKodNameList()变量并迭代所有变量并将其放入select选项中。

因此,请确保只将您想要访问的内容放入setAttribute变量

request.setAttribute("codeofcountries", sessionBean.getKodNameList());

此外,我认为您希望显示与值相同的内容而不是整个数组,如下所示

<c:forEach var="codecoun" items="${codeofcountries}">
  <option value="${codecoun.kods}">${codecoun.kods}</option>
</c:forEach>

答案 2 :(得分:0)

我找到了在我列出的类中解决问题的答案,方法和类被证明是静态的。事实上,有可能以几种方式解决问题,我决定这个问题。谢谢你的关注!