我有这段代码:
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 时,将显示命令按钮添加,但命令按钮添加不会重定向到{{1 }}
答案 0 :(得分:0)
当您单击添加按钮时,将重新创建bean,然后将值#{ddeBean.created}
重新初始化为false
,以便在执行操作之前不会呈现该按钮
要解决此问题,您需要将bean的范围更改为@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
属性,widgetVar
上的p:panel
属性以及rendered
属性已删除。