[英]Why does commandButton action listener does not working?
我正在將Primefaces組件與JSF2.0和Tomcat 6一起使用。目標是從Bean動態創建服務器組件。 為了測試,我做了下一件事情:
private Panel editorPanel;
private CommandButton btn;
public void createComponents()
{
this.setEditorPanel(new Panel());
this.getEditorPanel().setRendered(true);
btn = new CommandButton();
btn.setId("btn1");
btn.setRendered(true);
btn.setAjax(true);
btn.setValue("Click!");
btn.addActionListener(new ActionListener()
{
@Override
public void processAction(ActionEvent arg0) throws AbortProcessingException
{
addNewButton();
}
});
this.getEditorPanel().getChildren().add(btn);
}
public void addNewButton()
{
CommandButton btn2 = new CommandButton();
btn2.setRendered(true);
this.getEditorPanel().getChildren().add(btn2);
}
標記:
<p:panel binding="#{mybean.editorPanel}">
</p:panel>
在第一頁,呈現加載按鈕。 按下按鈕后,由於請求而重新創建了我的bean,但是從未觸發“ addNewButton”方法的斷點。 在該請求之后,按鈕將消失。 Bean被標記為@RequestScoped和@ManagedBean(name =“ mybean”)。 標記中未動態呈現的其他組件可以成功使用bean方法。 我用這個按鈕做錯了什么?
謝謝
編輯:我知道我可以在同一方法中將按鈕添加為上一個按鈕,但是目標是動態添加一些組件。
編輯2:我將ActionListener單獨實現為公共內部類,然后得到下一個:
Caused by: java.lang.InstantiationException:web.beans.pages.TemplateEditBean$BtnListener
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at javax.faces.component.StateHolderSaver.restore(StateHolderSaver.java:103)
... 90 more
使用Mojarra 2.1.3版本代替2.0.3解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.