0

我正在尝试创建一个页面,在 ajax 请求后将显示一些内容。这是我的代码的一部分:

<h:panelGroup>
        <h:form>
            Retrive object by id: <h:inputText id="myInput" value="#{myManager.id}"/> 
            <h:commandButton value="ok" action="#{myManager.getById}" >
                <f:ajax execute="myInput" render="resultRow" />
            </h:commandButton>
        <h:panelGroup id="resultRow" >
            <br />
            You retrived object which id is:
            <h:outputText value="#{retrivedObject.id}" />
            and its name is:
            <h:outputText value="#{retrivedObject.name}" />
        </h:panelGroup>
        </h:form>
</h:panelGroup>

我的问题是甚至在我检索任何对象之前就呈现了“您检索了 id 为的对象:” 。我希望它被隐藏,直到我点击我的命令按钮。是否可以只使用 jsf + html (这必须使用 ajax 来完成)?如果必须,我可以使用一些 javascript,但我不喜欢。

我试图通过rendered="#{!retrivedObject.id==0}"(我的对象不能有 id 0)来解决这个问题,但这不起作用 - 面板组根本没有呈现,当我调用 ajax 请求时,它无法找到“resultRow”id。

提前感谢您的帮助。

4

2 回答 2

0

它可能不是您要查找的内容,但您始终可以将 panelGroup 包装在 div 中并将 div 可见性设置为隐藏,然后在单击命令按钮时使用 javascript 更改可见性。

于 2013-12-13T19:51:45.447 回答
0

您可以rendered像这样使用属性:

<h:panelGroup>
    <h:form>
        Retrive object by id: <h:inputText id="myInput" value="#{myManager.id}"/>
        <h:commandButton value="ok" action="#{myManager.getById}" >
            <f:ajax execute="myInput" render="resultRow" />
        </h:commandButton>
        <h:panelGroup id="resultRow">
            <h:panelGroup rendered="#{retrivedObject ne null}">
                <br />
                You retrived object which id is:
                <h:outputText value="#{retrivedObject.id}" />
                and its name is:
                <h:outputText value="#{retrivedObject.name}" />
            </h:panelGroup>
        </h:panelGroup>
    </h:form>
</h:panelGroup>
于 2013-12-13T19:57:33.840 回答