用ajax切换图像渲染?

时间:2012-10-05 10:07:28

标签: ajax jsf facelets

如何根据按钮触发的布尔状态变量显示图像?我不希望整个页面重新加载,只是那个特定的图像。

Facelets页面:

 </h:form>
    <h:commandButton value="test" action="#{bean.toggleStatus}">
        <f:ajax render="image"/>
    </h:commandButton>
    <h:graphicImage id="image" value="status.gif" rendered="#{bean.status}"/>
 </h:form>  

支持课程:

    class Bean {

        private boolean status = false;

        public void toggleStatus() {
            status = true;
        }

        //getter, setter
    }

知道这里可能有什么问题吗?

1 个答案:

答案 0 :(得分:4)

您无法ajax更新未呈现给HTML端的HTML元素。将其包装在一个始终呈现的组件中,然后更新它。

E.g。

<h:form>
    <h:commandButton value="test" action="#{bean.toggleStatus}">
        <f:ajax render="image"/>
    </h:commandButton>
    <h:panelGroup id="image">
        <h:graphicImage value="status.gif" rendered="#{bean.status}"/>
    </h:panelGroup>
</h:form>

另见: