Mojarra JSF是否有办法根据支持模型限制文本字段的大小?
示例,通常:
<p:inputText required="true" id="firstname" maxlength="50" value="#{user.firstName}"></p:inputText>
class User {
@Size(max=50)
String firstName;
}
虽然我可以为每个字段添加一个maxlength属性,但我认为最后我会遇到维护问题,特别是当我有几个使用相同字段的表单时。如果我改变了场地的长度怎么办?
如果我没记错apache myfaces在他们的1个扩展库中有这个功能,那么mojarra的任何等价物?
我记得我现在正在使用myfaces的myfaces-extval-property-validation库。 http://myfaces.apache.org/extensions/validator12/validation-modules-project/myfaces-extval-property-validation/index.html
是否有来自mojarra的等同物?
谢谢,
czetsuya
答案 0 :(得分:2)
你可以有一个定义maxlength的bean属性。然后,您可以在一个地方至少更改此类型的所有文本字段的长度。
@ManagedBean
@ApplicationScoped
public class MyBean {
public int getType1MaxLength() {
return 50;
}
}
和xhtml:
<p:inputText ... maxlength="#{myBean.type1MaxLength}" value="#{user.firstName}">
答案 1 :(得分:1)
通过在JSF Resource Bundle中指定约束来更好地处理您的需求,您可以在其中配置所有此类属性,如错误/验证消息和用户字段约束,如字段最大长度和转换模式。
将所有此类信息存储在辅助bean中的问题是,这些约束/属性仅对特定bean支持的视图可用,而不是整个JSF Webapp可用的单个资源包文件。部署最佳实践还会建议您将这些内容放在代码库之外。针对您的具体用例
在项目中创建一个java样式包。我们说com.you.jsf.resources
。在此程序包中,您将存储包含字段设置的.properties
文件。
field.maxlength = 50
在faces_config.xml
文件中配置资源包软件包,其中<var>
指定要在应用程序中访问资源文件的变量名称
<application>
<resource-bundle>
<base-name>com.you.jsf.resources</base-name>
<var>conf</var>
</resource-bundle>
</application>
资源文件(及其内容)现在将在JSF上下文中以#{conf['field.maxlength']}
的形式提供。现在,您可以在视图中使用
<p:inputText required="true" id="firstname" maxlength="#{conf['field.maxlength']}" value="#{user.firstName}"/>