当使用length()函数与Flash对象一起使用时,InputText不工作



当页面第一次呈现时,文本框为空,当我单击按钮并调用action并像这样更新值时,它工作了,文本框更新为新值

  Flash flash = FacesContext.getCurrentInstance().getExternalContext()
                .getFlash();
    flash.put("errorMessage",featuesObj.getName() + "Some Error came");
   <h:inputText value="#{flash.errorMessage }" id="mymessage" />

但是现在在textbox中做了一些改变,增加了rendered现在不显示的文本框,即使按下命令按钮,而#{flash.errorMessage}已经有一些String的值

<h:inputText value="#{flash.errorMessage}" rendered="#{flash.errorMessage.length()  gt 0 }" id="mymessage" /> 

我也试过下面的代码

  <h:inputText value="#{flash.errorMessage.length()}"  id="mymessage" /> 

它总是显示falsetextbox即使我按下按钮。

谁能告诉我有什么问题吗?

这就是我的问题的答案

内容的Ajax呈现,该内容本身是有条件呈现的

Ajax呈现完全发生在客户端,并期望要更新的HTML元素已经在jsf生成的HTML输出中。

#{bean.renderResult}默认为false时,将不起作用:

   <h:form id="form">
        <h:commandButton value="Submit" action="#{bean.toggleRenderResult}">
            <f:ajax render=":result" />
        </h:commandButton>
    </h:form>
    <h:outputText id="result" value="#{bean.result}" rendered="#{bean.renderResult}" />

您需要确保呈现ID指向一个已经存在于jsf生成的HTML输出中的组件。

 <h:form id="form">
        <h:commandButton value="Submit" action="#{bean.toggleRenderResult}">
            <f:ajax render=":result" />
        </h:commandButton>
    </h:form>
    <h:panelGroup id="result">
        <h:outputText value="#{bean.result}" rendered="#{bean.renderResult}" />
    </h:panelGroup>

http://balusc.blogspot.in/2011/09/communication -在jsf html - 20. # AjaxRenderingOfContentWhichIsByItselfConditionallyRendered

相关内容

  • 没有找到相关文章

最新更新