現在、JBoss AS 7.1 でプレーンな JSF を使用して PopUp を開発しており、ポップアップ クラスのレンダラーにコマンド ボタンを追加しようとしています。クラス Popup は UIPanel を拡張します。ポップアップは ah:form 内にあります。
ポップアップにボタンを追加するコード:
private static final String ID_FIELD_TAG = "id";
private static final String HTML_DIV_TAG = "div";
[...]
writer.startElement(HTML_DIV_TAG, component);
writer.writeAttribute(ID_FIELD_TAG, konstanten.getPopupFooterId(), ID_FIELD_TAG);
writer.write("\n");
if(popup.isShowDialogButtons()){
HtmlCommandButton cancelButton = new HtmlCommandButton();
component.getChildren().add(cancelButton);
cancelButton.setId(konstanten.getPopupFooterCancelButtonId());
cancelButton.setValue(popup.getCancelText());
if (!popup.getCancelAction().equals("")) {
String expression = "#{"+popup.getCancelAction()+"}";
MethodExpression methodExpression = ExpressionHelper.EXPRESSION_HELPER.
generateMethodExpression(expression, null,
new Class<?>[] { ActionEvent.class });
cancelButton.addActionListener(new MethodExpressionActionListener(
methodExpression));
} else {
cancelButton.setOnclick("hidePopup('" + componentId + "')");
}
cancelButton.encodeAll(context);
}
writer.endElement(HTML_DIV_TAG);
ボタンは表示されますが、ページのリロードを除いて、クリックしても何も起こりません。
popup.getCancelAction() は「NameOfTheBean.NameOfTheMethod」を返します。
エラーメッセージはありません。
助けてくれてありがとう!
編集: HTMLCommandButton を HTMLCommandLink に置き換えて、フォームに問題があるかどうかを確認しようとしました。リンクは機能しているように見えますが、まだ何も呼び出されません。