Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于模型的JSF自动文本字段大小_Jsf_Jsf 2_Mojarra - Fatal编程技术网

基于模型的JSF自动文本字段大小

基于模型的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

MojaraJSF有没有办法根据支持模型限制文本字段的大小

例如,通常:

<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可用的单个资源包文件。部署最佳实践还将建议您将这些内容放在代码库之外。针对您的特定用例

  • 在项目中创建java风格的包。比如说
    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}"/>