传播我的jstl标签的一段代码 <forEach>
在jsp页面上:
<select>
<c:if test="${!empty codeofcountries}">
<c:forEach var="codecoun" items="${codeofcountries}">
<option value="${codecoun.kods}">${codecoun}</option>
</c:forEach>
</c:if>
</select>
我的控制器:
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
response.setContentType(request.getResponseContentType());
PPUZ_NDI_MNS_ENEEPortletSessionBean sessionBean = getSessionBean(request);
if( sessionBean==null ) {
response.getWriter().println("<b>NO PORTLET SESSION YET</b>");
return;
}
sessionBean.setDefaultInfoText();
String jsp = Start_JSP;
switch (sessionBean.getMode()) {
case Start:
jsp = Start_JSP;
break;
case Main:
jsp = Main_JSP;
break;
case Creat:
case Edit:
case Copy:
jsp = CreatEdit_JSP;
}
request.setAttribute("codeofcountries", sessionBean.getKodNameList());
PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(getJspFilePath(request, jsp));
rd.include(request, response);
当我转到portlet all handled well时,列表是从数组生成的,并显示在标记中 <select>
如我所需。但是当我在门户上重新运行会话时,标签(select)的值在jsp页面上被复制。不要将上一个值保留在tag(select)中,并再次向其添加相同的列表。
3条答案
按热度按时间v9tzhpje1#
从代码来看,这些值似乎被添加到
sessionBean.getKodNameList()
,导致值重复。为了防止这种情况,我建议调试代码并检查从何处添加值。但是,对于快速修复,可以使用unmodifiablelist或set(with)
equals
以及hashCode
在课程的各个类中实现的方法)KodNameList
.tuwxkamq2#
codeofcountries中的变量是获取所有getkodnamelist()变量,然后迭代所有这些变量并将其放入选择选项中。
因此,请确保只将要访问的内容放入setattribute变量
另外,我认为您希望显示与值相同的内容,而不是整个数组,如下所示
ibrsph3r3#
我在我列出的类中找到了解决问题的答案,结果发现方法和类是静态的。事实上,有几种方法可以解决这个问题,我选择了这一种。感谢您的关注!