首页 文章

jsf(richfaces)只读输入文本验证[重复]

提问于
浏览
6

这个问题在这里已有答案:

有没有什么方法可以验证一个只读的jsf输入文本,但是在触发其他一些事件时值会改变?

4 回答

  • 13

    仅在渲染响应阶段将 readonly 属性设置为 true . 这样,在渲染响应阶段之外的所有其他阶段中,它不会被视为只读 .

    <h:inputText ... readonly="#{facesContext.currentPhaseId.ordinal eq 6}" />
    
  • 2

    回答评论:“在jsf页面支持bean中验证它不是更容易吗?”您可以在按钮单击或类似事件上执行应用程序级验证 . 你可以在你的支持bean中做这样的事情并将它链接到事件 .

    public String login(){
            FacesContext context = FacesContext.getCurrentInstance();
            if(**<<some validation for value in field 'firstName' in form 'userForm'>>**){
                FacesMessage message = new FacesMessage();
                message.setSeverity(FacesMessage.SEVERITY_ERROR);
                message.setSummary("Some Valication check");
                message.setSummary("Some Valication check!!");
                context.addMessage("userForm:firstName", message);//adds validation message for field firstName in form userForm
                return "ERROR";
            }
            return "SUCCESS";
        }
    

    希望这有帮助 .

  • 2

    我通过解决方法解决了这个问题 . 我添加了 inputHidden 字段,其中 required 属性 true 不会出现在界面上,但会被验证:

    <h:inputHidden value="#{bean.value}" required="true"
                        requiredMessage="Data must be entered" />
    

    bean.value的值由其他事件更改,并且在inputHidden上的某个reRender处,将进行验证 .

  • 1

    您很可能必须直接从事件中手动调用验证逻辑 . 这是IBM的JSF生命周期模型 .

    enter image description here

    您会注意到Process Validations阶段发生在通常处理事件的Invoke Application阶段之前 . 这种情况很好地发生,因此验证不会自动发生 .

相关问题