2014-03-31 57 views
0

我想在jsf中刪除al jsf組件,並在我更改組合框中的值並且不知道如何執行時重繪它。我需要它,因爲我有一些java ifs,它們在頁面中繪製不同的組件。如何在方法bean執行時重新繪製JSF頁面?

這是代碼:

<% 
    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用於我想刪除所有outputtexts,輸入數據表......(不是VO,只是JSF標籤)。

+0

哎喲,爲什麼JSF 1.2和JSP?如果您可以使用JSF 2.x和Facelets,例如與Primefaces結合使用,您的生活變得如此簡單。 JSF 1.2沒有內置的Ajax支持,這正是你正在尋找的。 – Gimby

+0

我正在開發一個Alfresco應用程序,只支持JSF 1.2 :(這是主要問題 – Raider

+0

在這個時代,除了通過javascript onChange事件重新渲染頁面之外,我不知道該怎麼指導您。我建議將Richfaces 3.3添加到您的技術堆棧中,以便爲JSF 1.2添加ajax支持,但由於它過時,不受支持,並且在現代IE版本中甚至無法正常工作,所以今天這不是好建議。 – Gimby

回答

0

只需要刪除<%%>條件和使用本

rendered="#{PreguntasBean.valor =='3'}" 
相關問題