【问题标题】:Faces Bean Validation doesn't work on Glassfish 3.1.1Faces Bean 验证不适用于 Glassfish 3.1.1
【发布时间】:2011-11-01 19:30:48
【问题描述】:

我在请求范围的托管 bean 中使用了 bean 验证。

@ManagedBean(name = "loginController")
@RequestScoped
public class LoginController implements Serializable {

private static final long serialVersionUID = -7174581953062231554L;

@NotNull(message = "Password!")
private String mPassword;

@NotNull
private String mUsername;
...
...
public String login() {
    ..
    return "destination.xhtml";
}

..在 web.xml 中,我也配置了它以将空字符串解释为空值:

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

视图如下所示:

<h:form id="login">
    <h3><h:outputText value="Username" /></h3>
    <h:inputText id="username" value="#{loginController.username}" />
    <h3><h:outputText value="Password" /></h3>
    <h:inputSecret id="password" value="#{loginController.password}" autocomplete="off" />
    <h:commandButton id="submit" value="Login" action="#{loginController.login}">
        <f:param name="redirect" value="#{requestScope['javax.servlet.forward.request_uri']}" />
    </h:commandButton>
</h:form>

环境:Glassfish 3.1.1 / Mojarra JSF 2.1

问题:当按下未填写用户名或密码字段的提交按钮时,将执行操作,尽管注释 (@javax.validation.constraints.NotNull) 应该阻止这种情况。验证无效! 将属性“必需”添加到字段将解决此问题,但我不希望视图中的验证逻辑。 你对我有什么建议吗?

更新

基本上,上面的代码有效。我在一个单独的项目中对其进行了测试。 在另一个仍然无法工作的项目中,情况有所不同。该表单在 web.xml 文件中配置为登录表单 (login-config)。这是否会对 jsf 生命周期产生一些变化? ..或其他什么?

【问题讨论】:

  • 根据您的更新,因此您使用的是&lt;form&gt; 而不是&lt;h:form&gt;
  • 不,我用过&lt;h:form&gt;。这有关系吗?

标签: java jsf glassfish bean-validation


【解决方案1】:

你的验证不会是关于 String.empty 而不是 "notnull" 吗? 尤其是当数据来自表单时,字符串的“null”值不应该存在。

必填

required 属性是一个布尔标志,指示是否 用户需要在表单之前为此字段提供一个值 可以提交到服务器

也许,在@NotNull 下面,你可以尝试添加

@Size(min=1, max=X)

请看这里:http://download.oracle.com/javaee/6/tutorial/doc/gircz.html

【讨论】:

  • 请注意 javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL 上下文参数存在。这需要注意 JSF 将提交的空字符串值解释为 null 并同样验证它们。
猜你喜欢
  • 2019-05-22
  • 2013-11-07
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
相关资源
最近更新 更多