【发布时间】:2015-10-02 11:32:03
【问题描述】:
这是我的 jsp 文件:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Company Data</title>
</head>
<body>
<center><h3>Company Data</h3></center>
<s:form action="companyData" validate="true">
<s:textfield label="Name" key="companyName" />
<s:textfield label="ISIN" key="companyISIN" />
<s:checkboxlist list="exchangesList" label="Exchange" name="exchange" />
<s:select list="sectorsList" label="Sector" name="sector" />
<s:checkboxlist list="shareholdersList" label="Shareholders" name="shareholders" />
<s:submit />
</s:form>
</body>
</html>
这里,shareholdersList 是 ArrayList<String>,shareholders 是 String。
这是我的动作验证文件:
<!DOCTYPE validators PUBLIC
"-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>
<field name="companyName">
<field-validator type="required">
<message>You must enter some name for companyName</message>
</field-validator>
</field>
<field name="companyISIN">
<field-validator type="required">
<message>You must enter some id for companyISIN</message>
</field-validator>
</field>
<field name="exchange">
<field-validator type="fieldexpression">
<param name="expression">
<![CDATA[ isDoNotCheck() ? true : (exchange != null && !exchange.isEmpty()) ]]>
<!-- OR -->
<!-- isDoNotCheck() ? true : !object.field.isEmpty() -->
</param>
<message>You must check some checkboxes for exchange</message>
</field-validator>
</field>
<field name="shareholders">
<field-validator type="fieldexpression">
<message>You must check some checkboxes for shareholders</message>
</field-validator>
</field>
</validators>
这是提交表单的截图:
文本框的验证工作正常,但复选框列表根本不工作。我想要复选框列表验证,以便用户必须从列表中选择至少一个复选框。应该如何更正代码?
另外,我有一个类似的选择列表,而不是其他一些 jsp 中的复选框列表,那么如何也验证该列表。我在互联网上找到了很多东西,但到目前为止没有任何效果。
【问题讨论】:
-
切换到开发者模式查看更多异常,如果有异常解析表达式请贴到问题中。
-
您使用的是哪个版本的 S2?你确定
shareholders和exchange是String-s 并且有正确的getter/setter 吗? -
2.3.24。是的。它们背后的逻辑运行得非常好。只是验证造成了问题。
标签: java forms validation jsp struts2