基于模型的JSF自动文本字段大小
MojaraJSF有没有办法根据支持模型限制文本字段的大小 例如,通常:基于模型的JSF自动文本字段大小,jsf,jsf-2,mojarra,Jsf,Jsf 2,Mojarra,MojaraJSF有没有办法根据支持模型限制文本字段的大小 例如,通常: <p:inputText required="true" id="firstname" maxlength="50" value="#{user.firstName}"></p:inputText> class User { @Size(max=50) String firstName; } 类用户{ @尺寸(最大值=50) 字符串名; } 虽然我可以为每个字段添加一个maxleng
<p:inputText required="true" id="firstname" maxlength="50" value="#{user.firstName}"></p:inputText>
class User {
@Size(max=50)
String firstName;
}
类用户{
@尺寸(最大值=50)
字符串名;
}
虽然我可以为每个字段添加一个maxlength属性,但我认为最终我会遇到维护问题,特别是当我有几个表单使用同一字段时。如果我改变场地的长度呢
如果我没记错的话,ApacheMyFaces在其扩展库的1中有这个特性,mojarra有没有类似的功能
我记得现在我正在使用myfaces的myfaces extval属性验证库。
莫哈拉有类似的产品吗
谢谢,
czetsuya您可以使用一个bean属性来定义maxlength。然后,您至少可以在一个位置更改此类型的所有文本字段的长度
@ManagedBean
@ApplicationScoped
public class MyBean {
public int getType1MaxLength() {
return 50;
}
}
以及xhtml:
<p:inputText ... maxlength="#{myBean.type1MaxLength}" value="#{user.firstName}">
通过在配置所有此类属性(如错误/验证消息)和用户字段约束(如字段最大长度和转换模式)时指定约束,可以更好地处理您的需求 将所有此类信息隐藏在支持bean中的问题是,这些约束/属性将仅对特定bean支持的视图可用,而不是对整个JSF Webapp可用的单个资源包文件。部署最佳实践还将建议您将这些内容放在代码库之外。针对您的特定用例
com.you.jsf.resources
。在此包中,您将存储一个包含字段设置的.properties
文件
field.maxlength = 50
faces\u config.xml
文件中,从1)配置资源包包,其中
指定要在应用程序中访问资源文件的变量名
<application>
<resource-bundle>
<base-name>com.you.jsf.resources</base-name>
<var>conf</var>
</resource-bundle>
</application>
我对这种方法的担忧是,托管bean将与实体bean尽可能不同步,因此我希望限制实体上的size属性定义。我对这种方法的担忧与我上面的评论相同,即属性文件与实体bean size属性不同步,这将导致异常。这就是为什么我想从实体的字段中获取大小定义。@czetsuya,那么显而易见的选择是实体将其字段定义作为其modelyes的一部分。但是如何使用实体字段的size属性限制jsf页面中的文本字段长度呢?它可以像我上面提到的Apache库那样自动完成。
<p:inputText required="true" id="firstname" maxlength="#{conf['field.maxlength']}" value="#{user.firstName}"/>