我目前正在 JBoss AS 7.1 上开发一个带有纯 JSF 的弹出窗口,并且我正在尝试在弹出类的渲染器中添加一个命令按钮。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”。
没有错误消息。
谢谢您的帮助!
编辑:我尝试用 HTMLCommandLink 替换 HTMLCommandButton 以查看表单是否存在问题。该链接看起来可以正常工作,但仍然没有调用任何内容。