属性 上的 Stripes 框架表达式验证
Stripes Framework expression validation on property
我正在尝试在我的 属性 on actionbean 上添加表达式验证,但我无法使其工作。我什至尝试过使用这样的整数>0,但仍然抛出相同的异常。下面是代码
@Validate(required=true, minvalue=1, expression="${this > maxBudget}")
int minBudget;
int maxBudget;
我遇到以下异常:
net.sourceforge.stripes.exception.StripesRuntimeException: Could not parse the EL expression being used to validate
field minBudget. This is not a transient error. Please double check the following expression for errors: ${this > maxBudget}
由
引起
javax.el.ELException: The identifier [this] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier).
This check can be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true.
我尝试了一些变体,但每次都会抛出这个异常。
有人可以指出我在这里做的错误吗
谢谢
如果你想确保 minBudget
大于 maxBudget
(不是相反吗?)你可以这样做:
@Validate(required=true, minvalue=1, expression="${minBudget > maxBudget}")
为了获得更大的灵活性,您可以考虑实施自定义验证方法:
@ValidationMethod(on={"show"})
public void checkBudgetRange(ValidationErrors errors) {
if (minBudget < maxBudget)
errors.addGlobalError( new SimpleError("This is not good..."));
// all sorts of other checks to your liking
}
on
数组参数包含您要为其执行此验证方法的事件处理程序的名称。所以在这里的例子中是 public Resolution show()
.
在 https://stripesframework.atlassian.net/wiki/display/STRIPES/Validation+Reference
的 Stripes Framework 网站上有一个很好的解释
更新:
如果你想在验证表达式中使用 this
关键字,你可能需要向你的服务器添加一个 VM 参数(在 Tomcat 8 上测试过):
-Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true
否则可能会报上述错误
从 Tomcat 的版本 7 开始,org.apache.el.parser.SKIP_IDENTIFIER_CHECK
的默认值已从 true
更改为 false
。
https://tomcat.apache.org/tomcat-6.0-doc/config/systemprops.html
https://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html
我正在尝试在我的 属性 on actionbean 上添加表达式验证,但我无法使其工作。我什至尝试过使用这样的整数>0,但仍然抛出相同的异常。下面是代码
@Validate(required=true, minvalue=1, expression="${this > maxBudget}")
int minBudget;
int maxBudget;
我遇到以下异常:
net.sourceforge.stripes.exception.StripesRuntimeException: Could not parse the EL expression being used to validate
field minBudget. This is not a transient error. Please double check the following expression for errors: ${this > maxBudget}
由
引起 javax.el.ELException: The identifier [this] is not a valid Java identifier as required by section 1.19 of the EL specification (Identifier ::= Java language identifier).
This check can be disabled by setting the system property org.apache.el.parser.SKIP_IDENTIFIER_CHECK to true.
我尝试了一些变体,但每次都会抛出这个异常。
有人可以指出我在这里做的错误吗
谢谢
如果你想确保 minBudget
大于 maxBudget
(不是相反吗?)你可以这样做:
@Validate(required=true, minvalue=1, expression="${minBudget > maxBudget}")
为了获得更大的灵活性,您可以考虑实施自定义验证方法:
@ValidationMethod(on={"show"})
public void checkBudgetRange(ValidationErrors errors) {
if (minBudget < maxBudget)
errors.addGlobalError( new SimpleError("This is not good..."));
// all sorts of other checks to your liking
}
on
数组参数包含您要为其执行此验证方法的事件处理程序的名称。所以在这里的例子中是 public Resolution show()
.
在 https://stripesframework.atlassian.net/wiki/display/STRIPES/Validation+Reference
的 Stripes Framework 网站上有一个很好的解释更新:
如果你想在验证表达式中使用 this
关键字,你可能需要向你的服务器添加一个 VM 参数(在 Tomcat 8 上测试过):
-Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true
否则可能会报上述错误
从 Tomcat 的版本 7 开始,org.apache.el.parser.SKIP_IDENTIFIER_CHECK
的默认值已从 true
更改为 false
。
https://tomcat.apache.org/tomcat-6.0-doc/config/systemprops.html
https://tomcat.apache.org/tomcat-7.0-doc/config/systemprops.html