使用length()函数时,InputText无法使用Flash对象?

时间:2015-08-10 10:15:28

标签: jsf jsf-2

当第一次呈现页面时,文本框为空,当我单击一个按钮并调用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" /> 

即使按下按钮,它始终显示false textbox

有人可以告诉我可能会出现什么问题吗?

1 个答案:

答案 0 :(得分:0)

这是我的问题的答案

内容的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-in-jsf-20.html#AjaxRenderingOfContentWhichIsByItselfConditionallyRendered