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
Validation JSF根据验证更新bean中的值的正确方法_Validation_Jsf - Fatal编程技术网

Validation JSF根据验证更新bean中的值的正确方法

Validation JSF根据验证更新bean中的值的正确方法,validation,jsf,Validation,Jsf,我有一个与页面关联的buckingbean,我想根据验证是失败还是成功来更改它的值 @ManagedBean(name = "testBean") @ViewScoped() public class TestBean implements Serializable { String value=""; int number; /*getters-setters*/ } 检查数字是否为正数的验证器 @FacesValidator("Validator") public class Nu

我有一个与页面关联的buckingbean,我想根据验证是失败还是成功来更改它的值

@ManagedBean(name = "testBean")
@ViewScoped()
public class TestBean implements Serializable {

String value="";
int number;

  /*getters-setters*/
}
检查数字是否为正数的验证器

@FacesValidator("Validator")
public class NumValidator implements Validator{



    @Override
    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {

        int num=(Integer)value;
        if(num<0){
            FacesMessage msg = 
                new FacesMessage(The number is negative");
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(msg);
           }


    }
}
@FacesValidator(“验证器”)
公共类NumValidator实现验证器{
@凌驾
公共无效验证(FacesContext上下文、UIComponent组件、,
对象值)引发异常{
int num=(整数)值;

如果(num您的具体功能需求似乎归结为:

的样式类出现验证错误时,如何更改它

在这种情况下,只需签入EL即可。当前UI组件仅在
{component}
处可用

<h:inputText ... styleClass="#{component.valid ? 'positive' : 'negative'}">
    <f:ajax ... render="@this msg" />
</h:inputText>

请注意,我将
@此
添加到
渲染
,否则组件本身将不会更新


你不应该用特定于视图的属性(如CSS类)来污染模型。你应该尽可能多地将它们保留在视图端。这样会更“自然”解决方案。

该值的用途是什么?为什么会有一个从未命中action方法的模型值?该值实际上不属于视图端吗?顺便说一句,如果您只想验证该值是否为负值,也可以使用JSF的内置
验证器。@BalusC我想更改输入字段是否正确。这是我的逻辑。css连接到一个从xhtml读取的字符串。因此,如果输入有效或无效,该字符串应相应更改。我的逻辑正确吗?还是我应该使用javascript/jquery?因此,在过滤完所有噪音后,您的具体问题归结为:“如何根据输入字段是否存在验证错误来更改其样式类?“,对吗?@BalusC是的,但我更感兴趣的是我在问什么,以防我需要它。你不应该问。问题Y的解决方案不一定是问题X的正确解决方案。你应该问具体的功能需求,而不是“可能的解决方案”对于具体的功能需求,这可能不是正确的解决方案。component.valid是来自bean名称组件的绑定词或变量吗?同样,在引导程序a中,在输入字段上方需要呈现表单输入a。那么我如何更改它的css呢?对于第一部分,单击链接(并阅读一本书).至于第二部分,这已经在你之前的问题中得到了回答。在我的国家很难找到这些书,它们是专门的!谢谢你的时间和努力!有没有办法让我一开始就有一个css类,例如开始,然后换成另外两个css类(否定,Positiv)关于输入的有效性?您可以在
{facesContext.postback}
上添加一个检查。例如
styleClass=“{facesContext.postback?component.valid”?'positive':'negative':'start'}
<h:inputText ... styleClass="#{component.valid ? 'positive' : 'negative'}">
    <f:ajax ... render="@this msg" />
</h:inputText>