我是Struts 2中的新手。我的页面中有三个文本字段,我对该文本字段进行了数字验证(0-9)。在我的validation.xml文件中,代码就像
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
<field name="disSlab.minAmt">
<field-validator type="requiredstring">
<message>Required</message>
</field-validator>
<field-validator type="int">
<param name="min">0</param>
<param name="max">9</param>
<message>Data Not Valid</message>
</field-validator>
</field>
<field name="disSlab.maxAmt">
<field-validator type="requiredstring" short-circuit="true">
<message>Required</message>
</field-validator>
</field>
<field name="disSlab.schemeValue">
<field-validator type="requiredstring" short-circuit="true">
<message>Required</message>
</field-validator>
</field>
</validators>
我知道<field-validator type="int">
不适用于Number Filed。但我需要在用户输入除0到9之外的任何内容时提示用户。
你能帮我解决一下我应该提交哪些文件进行验证,这样我就可以解决我的问题了。感谢Adv。
Dhrumil Shah
这不是解决方案,这是我的问题的进一步细节
请参阅我已经调试了验证lib的源代码。它会像这样生成客户端查询代码..
<script type="text/javascript">
function validateForm_updateSlabDataFormId() {
form = document.getElementById("updateSlabDataFormId");
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
var continueValidation = true;
// field name: disSlab.minAmt
// validator name: requiredstring
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "requiredstring on amt";
if (continueValidation && field.value != null && (field.value == "" || field.value.replace(/^\s+|\s+$/g, "").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: disSlab.minAmt
// validator name: required
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "required on amt";
if (field.value == "") {
addError(field, error);
errors = true;
}
}
// field name: disSlab.minAmt
// validator name: conversion
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "Conversion needed";
}
// field name: disSlab.minAmt
// validator name: int
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "Data Not Valid";
if (continueValidation && field.value != null) {
if (parseInt(field.value) <
0 ||
parseInt(field.value) >
9) {
addError(field, error);
errors = true;
}
}
}
</script>
请参阅此代码是自动生成的。提交页面时,此代码非常有用。但它在页面提交之前未生成..此问题仅适用于<field-validator type="conversion">
不适用于type = required。
你能帮我解决这个问题..
最后我需要的是 我不想为数字验证或任何其他正则表达式验证重新加载页面。这仅适用于所需的验证。
答案 0 :(得分:1)
您可以使用regular expression validator仅将字符串与数字匹配。
答案 1 :(得分:1)
这不是解决方案,这是我的问题的进一步细节
请参阅我已经调试了验证lib的源代码。它会像这样生成客户端查询代码..
<script type="text/javascript">
function validateForm_updateSlabDataFormId() {
form = document.getElementById("updateSlabDataFormId");
clearErrorMessages(form);
clearErrorLabels(form);
var errors = false;
var continueValidation = true;
// field name: disSlab.minAmt
// validator name: requiredstring
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "requiredstring on amt";
if (continueValidation && field.value != null && (field.value == "" || field.value.replace(/^\s+|\s+$/g, "").length == 0)) {
addError(field, error);
errors = true;
}
}
// field name: disSlab.minAmt
// validator name: required
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "required on amt";
if (field.value == "") {
addError(field, error);
errors = true;
}
}
// field name: disSlab.minAmt
// validator name: conversion
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "Conversion needed";
}
// field name: disSlab.minAmt
// validator name: int
if (form.elements['disSlab.minAmt']) {
field = form.elements['disSlab.minAmt'];
var error = "Data Not Valid";
if (continueValidation && field.value != null) {
if (parseInt(field.value) <
0 ||
parseInt(field.value) >
9) {
addError(field, error);
errors = true;
}
}
}
</script>
请参阅此代码是自动生成的。当我提交页面时,此代码非常有用。但它在页面提交之前未生成..此问题仅适用于
不适用于type = required。
最后我需要的是 我不想为数字验证或任何其他正则表达式验证重新加载页面。这仅适用于所需的验证。
-------------------------------------------------------------------------------------------
最后我得到了答案
让我解释一下我能找到解决方案
我需要对文本字段进行验证以验证仅数字输入。
我认为Struts2为我们提供了这个基本的验证,但我找不到它。
所以我在我的领域进行了正则表达式验证,如
<field-validator type="regex" short-circuit="true">
<param name="expression"><![CDATA[^[0-9]+$]]></param>
<message>Not Valid Number</message>
</field-validator>
这适用于Ajax-JQuery验证。 我忘了把 CDATA 放在我的正则表达式中。但现在这很好。
感谢您的支持。
Dhrumil Shah