【问题标题】:How to repaint JSF page when method bean is executed?执行方法bean时如何重新绘制JSF页面?
【发布时间】:2014-03-31 07:50:15
【问题描述】:

我想删除 jsf 中的所有 jsf 组件,并在我更改组合框中的值但不知道该怎么做时重新绘制它。我需要它,因为我有一些 java ifs,它们在页面中绘制不同的组件。

这是代码:

<%
    FacesContext facesContext = FacesContext.getCurrentInstance();

    PreguntasBean preguntasBean = (PreguntasBean) facesContext
            .getApplication()
            .createValueBinding("#{PreguntasBean}")
            .getValue(facesContext);
    preguntasBean.buscaTipoPregunta();

%>
        <h:outputText value="Selecciona un tipo de pregunta" />
        <h:selectOneMenu 
            id="tipoSeleccionado" value="#{PreguntasBean.tipos}" valueChangeListener="#{PreguntasBean.muestraPregunta}" onchange="submit()">
            <f:selectItems value="#{PreguntasBean.tiposValue}" />
        </h:selectOneMenu>


        <h:outputText value="Enunciado " />
        <h:inputText value="#{PreguntasBean.preguntaParaGuardar.enunciado}" />

        <%if(preguntasBean.getValor().equals("1") || preguntasBean.getValor().equals("2") || preguntasBean.getValor().equals("3")){ %>

            <%if(preguntasBean.getValor().equals("2")){ %>
                    <h:outputText value="Opcion 1" />
                    <h:inputText value="" />
                    <h:outputText value="Opcion 2" />
                    <h:inputText value="" />
            <%} %>
            <h:outputText value="Sentencia" />
            <h:inputText value="#{PreguntasBean.sentencia}" />
            <%if(preguntasBean.getValor().equals("3")){ %>
                <h:outputText value="Texto fin" />
                <h:inputText value="" />
            <%} %>
            <h:commandButton value="Añadir sentencia" action="#{PreguntasBean.addSentencia}"/>
            <h:dataTable border="1" var="tablaSentencias" value="#{PreguntasBean.listaSentencias}" binding ="#{PreguntasBean.tabla}">
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Sentencias" />
                    </f:facet>
                        <h:outputText value="#{tablaSentencias.sentencia}" />
                </h:column>
                <h:column>
                    <f:facet name="header">
                        <h:outputText value="Acción" />
                    </f:facet>
                    <h:commandButton value="Borrar" action="#{PreguntasBean.borraSentencia}" />
                </h:column>
            </h:dataTable>
        <%} %>

所以当我更改 selectOneMenu 时,我想删除所有输出文本、输入、数据表...(不是 VO,只有 jsf 标签)。

【问题讨论】:

  • 哎呀,为什么是 JSF 1.2 和 JSP?如果您可以使用 JSF 2.x 和 Facelets(例如与 Primefaces 结合使用),您的生活会变得如此轻松。 JSF 1.2 没有您正在寻找的内置 Ajax 支持。
  • 我正在开发一个 Alfresco 应用程序并且只支持 JSF 1.2 :( 这是主要问题
  • 在这个时代,除了通过 javascript onChange 事件重新呈现页面之外,我不知道该给您什么建议。 5 年前,我建议将 Richfaces 3.3 添加到您的技术堆栈中,以便为 JSF 1.2 添加 ajax 支持,但今天这根本不是一个好建议,因为它已过时、不受支持,甚至在现代 IE 版本中都无法正常工作。
  • 无法使用 Js,我在 onchange 事件中提交,我无法添加 Richfaces 或使用 ajax,因为 alfresco 讨厌它 xD
  • 此时我会把 Alfresco 和垃圾放在外面,然后开始研究可以使用的最新工具。

标签: java jsf-1.2


【解决方案1】:

只需要删除个条件并使用这个

rendered="#{PreguntasBean.valor =='3'}"

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 2012-08-03
    • 2013-07-27
    • 1970-01-01
    • 2011-04-07
    相关资源
    最近更新 更多