0

我在尝试form:select在 HDIV 中实施时遇到了麻烦。这是我在 JSP 中呈现选择器和选项的代码:

<form:form
	modelAttribute="staffPosition" 
	method="post"
	action="${contextPath}/project/assign/staff">
	<td>
		<form:select class="form-control" path="staffID">
			<c:forEach items="${staffList}" var="staff">
				<c:set var="staffName" value="${staff.prefix} ${staff.firstName} ${staff.middleName} ${staff.lastName} ${staff.suffix}"/>
				<form:option value="${staff.id}" label="${staffName}"/>
			</c:forEach>
		</form:select>
	</td>
	<td>
		&nbsp;
	</td>
	<td>
		<form:input placeholder="Example: Project Manager, Leader, etc..."
			type="text"
			class="form-control"
			path="position"/>
	</td>
	<td>
		&nbsp;
	</td>
	<td>
		<button class="btn btn-default btn-flat btn-sm">Assign</button>
	</td>
</form:form>

在我单击分配并启动操作后,请求将Controller使用 selected 的正确 ID到达form:option

public String assignStaff(
	@ModelAttribute(ATTR_STAFF_POSITION) StaffAssignmentBean staffAssignment) {

但是,当我检查控制台时,出现了错误: INVALID_CONFIDENTIAL_VALUE;/pmsys/project/assign/staff;staffID;27;[27, 28, 29, 30, 31, 32, 41];127.0.0.1;127.0.0.1;root

当我试图跟踪吐出错误的代码行时: org.hdiv.filter.ValidatorHelperRequest:948

评估此条件时 ,与originalValue和 参数不一致:valueif (!m.matches() || (Integer.valueOf(value).intValue() >= stateValues.size())) {

originalValue= [27、28、29、30、31、32、41]

value= 27(这是form:option我在 JSP 中选择的 ID 号)

有没有人有解决这个问题的方法?这可能是 HDIV 中的错误吗?

注意: 如果我没有<c:forEach内部<form:select.

更新: 这是我的hdiv 配置

<!-- *********************************************************** -->
	<!-- *********************************************************** -->
	<!-- HDIV ****************************************************** -->
	<!-- *********************************************************** -->
	<!-- *********************************************************** -->
	<!-- HDIV Config -->
	<beans:bean id="hdivEditableValidator" class="org.hdiv.web.validator.EditableParameterValidator"/>
	<mvc:annotation-driven validator="hdivEditableValidator"/>
	
	<!-- Accepted pattern within the application for all editable parameters (generated from textbox and textarea) -->
	<hdiv:validation id="safeText">
		<hdiv:acceptedPattern><![CDATA[^[a-zA-Z0-9@.\-_]*$]]></hdiv:acceptedPattern>
	</hdiv:validation>
	
	<hdiv:editableValidations>
		<hdiv:validationRule url=".*" enableDefaults="false">safeText</hdiv:validationRule>
	</hdiv:editableValidations>    
	
	<hdiv:config
		debugMode="true"
		errorPage="/fix"
		excludedExtensions="css,png,gif,jpeg,jpg,js,woff,woff2,map"
		randomName="true"
		strategy="cipher">
		<hdiv:sessionExpired loginPage="/auth/login" homePage="/"/>
		
		<!-- Controller calls that do not have validation -->
		<hdiv:startPages>/</hdiv:startPages>
		<hdiv:startPages method="get">/auth/denied,/fix,/,/auth/login,/auth/logout,/dashboard/,/image/display/project/profile/,/image/display/staff/profile/</hdiv:startPages>
		<hdiv:startPages method="post">/j_spring_security_check</hdiv:startPages>
	</hdiv:config>

WEB.xml _

	<!-- Replace JSTL tld with HDIV tld-->
	<jsp-config>
	    <taglib>
	        <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
	        <taglib-location>/WEB-INF/tlds/hdiv-c.tld</taglib-location>
	    </taglib>
	</jsp-config>
	
	<!-- HDIV Listener -->
	<listener>
	    <listener-class>org.hdiv.listener.InitListener</listener-class>
	</listener>
	
	<!-- HDIV Validator Filter -->
	<filter>
	    <filter-name>ValidatorFilter</filter-name>
	    <filter-class>org.hdiv.filter.ValidatorFilter</filter-class>
	</filter>
	<filter-mapping>
	    <filter-name>ValidatorFilter</filter-name>
	    <servlet-name>appServlet</servlet-name>
	</filter-mapping>

版本

<hdiv-version>2.1.9</hdiv-version>

<org.springframework>4.1.6.RELEASE</org.springframework>

4

0 回答 0