我们正在将我们的应用程序从 spring 3 迁移到 spring 4。我现在有一个问题,当我使用 c:out 而不是当我使用 form:form 时,会话变量得到了解决。我在另一个帖子上查看了类似的问题,但仍未得到答复。但是,我现在面临同样的问题。
<%@ include file="/common/taglibs.jsp"%>
<c:forEach var="item" items="${yesNos}">
<c:out value="${item}"/>
</c:forEach>
<form:select path="blocked">
<form:option value="" label=""/>
<form:options items="${yesNos}" itemValue="id" itemLabel="${domainValueProperty}"/>
</form:select>
c:forEach能够迭代列表“ yesNos ”。 form:options似乎无法识别此列表“ yesNos ”并引发错误
OptionsTag - 类型 [java.lang.String] 对选项项无效
yesNos是我们 POJO 的列表,并定义了相应的 PropertyEditor。我怀疑 PropertyEditor 是一个问题,但下面的认识难住了我。
我还意识到form:form标记还显示了一个问题,其中传递给action属性的动态会话变量没有得到解决,即使在生成的 HTML 源中也保持为 ${}。
JSP: formActionURL是字符串类型
<form:form action="${formActionURL}" commandName="pDSearch">
HTML 源代码
<form id="pDSearch" action="${formActionURL}" method="post">
- 我已经配置了 taglibs uri,它运行良好,因为正在处理标签。
- 这适用于 Spring 3.0.7 和 servlet 2.3。现在,我们正在迁移到 spring 4.0.6 和 servlet 2.3。
- 在另一篇文章中,请求者使用了 servlet 2.5,但仍然面临这个问题。迁移到 servlet 2.5 将对我们的应用程序产生巨大影响。
下面是页面导入的taglibs.jsp
<%@ page language="java" errorPage="/error.jsp" pageEncoding="UTF-8" contentType="text/html; charset=utf-8" %>
<%@ taglib uri="http://www.springframework.org/security/tags" prefix="security" %>
<%@ taglib uri="http://www.springmodules.org/tags/commons-validator" prefix="v" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://displaytag.sf.net/el" prefix="display" %>
<%@ taglib uri="http://struts-menu.sf.net/tag-el" prefix="menu" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://www.opensymphony.com/oscache" prefix="cache" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
非常感谢有人可以将我重定向到可以找到问题答案的来源。如果您需要更多信息,请告诉我。