2013-06-03 8 views
0

у меня есть этот код:PrimeFaces CommandButton не перемещаться

Add.xhtml:

<h:form id="nouv"> 
    <h:panelGrid columns="2"> 
     <h:outputText value="Nom:"></h:outputText> 
     <p:inputText value="#{ddeBean.nom}"></p:inputText> 
     <p:commandButton id="save" 
       value="ajouter"  
       update=":nouv:btn"       
       actionListener="#{ddeBean.ajouter}"> 
     </p:commandButton> 

     <p:outputPanel id="btn"> 
      <h:outputText rendered="#{ddeBean.created}" value="#{ddeBean.message}"/> 
      <p:commandButton id="btn_cr" value="add" rendered="#{ddeBean.created}" 
        action="pool.xhtml?faces-redirect=true"> 
      </p:commandButton> 
     </p:outputPanel> 
    </h:panelGrid> 
</h:form> 

ddeBean.java:

@ManagedBean(name = "ddeBean") 
@RequestScoped 
public class DemandeBean implements Serializable{ 
    ddeDAO dao = new ddeDaoImpl(); 
    private String nom; 
    public String message = ""; 
    private boolean created = false; 

    public void test(ActionEvent event){ 
     Demande p = new Demande(); 
     p.setDde(this.nom); 
     dao.Nouveau_dde(p); 
     created = true; 
     this.setMessage("saved!"); 
    } 
} 

Когда я нажимаю CommandButton Ajouter рассылку сообщение будет введена команда Add, но командная кнопка Добавить не перенаправляется на pool.xhtml.

ответ

0

При нажатии на кнопку Добавить, фасоль воссоздан и значение #{ddeBean.created} затем инициализируется в false поэтому кнопка не получает оказанной, прежде чем действие имеют место.

Чтобы исправить это, вам необходимо изменить область действия вашего компонента на @ViewScoped.

Вы также должны убедиться в том, чтобы заменить

public void test(ActionEvent event){ 

по

public void ajouter(ActionEvent event){ 

, если вы хотите, чтобы вашей кнопки работы должным образом.

Другое решение

Поскольку вы используете PrimeFaces, вы могли бы показать свою кнопку с помощью JavaScript:

<p:commandButton id="save" 
    value="ajouter"  
    oncomplete="panel-create.show();"       
    actionListener="#{ddeBean.ajouter}"> 
</p:commandButton> 

<p:outputPanel id="btn" style="display: none;" widgetVar="panel-create"> 
    <h:outputText value="#{ddeBean.message}"/> 
    <p:commandButton id="btn_cr" value="add" 
     action="pool.xhtml?faces-redirect=true"> 
    </p:commandButton> 
</p:outputPanel> 

Примечание атрибут oncomplete на p:commandButton атрибут на p:panel и renderedwidgetVar атрибуты удалены.

+0

ok Я попробую это – joice

+0

Когда я изменил область действия на @ViewScoped У меня была ошибка, и моя страница xhtm больше не была отслаивается – joice

+0

Какая ошибка? Вы очистили/перекомпилировали/перераспределили? –

Смежные вопросы