请问怎么给jsf页面中动态按钮添加事件

xmu_才盛 2008-12-13 02:21:16
添加动态按钮,然后添加事件,但是事件不能成功绑定

ps:页面中按一个按钮,然后生成一个按钮,下面是响应backbean中的代码,按钮能生成,但是事件不能绑定

Application application=FacesContext.getCurrentInstance().getApplication;
List<UIComponent> children=controlPanel.getChildren();
HtmlCommandButton chooseButton=
(HtmlCommandButton)application.createComponent(HtmlCommandButton.COMPONENT_TYPE);

chooseButton.setValue("选课");

children.add(chooseButton);//加入到页面中

/**********************************下面是我的想法**************************************************/
想法一: 用 choosebutton.addActionListener(new ActionListener(){……});//不能成功
想法二: 用 choosebutton.setActionExpression(me);//可是还是不行,相关代码如下
public class ChooseClass()//
{
……
public void Addbutton{
……
ExpressionFactory ef=application.getExpressionFactory();
ELContext elContext =FacesContext.getCurrentInstance().getELContext();
Class[] c = new Class[0];
MethodExpression me = ef.createMethodExpression(elContext,"#{choose.testEl}", Void.TYPE, c);
chooseButton.setActionExpression(me);
chooseButton.setId("Button"+i);
……}
public void testEl()
{
JOptionPane.showMessageDialog(null,"sdfas");
}
……
}
faces-config.xml
<managed-bean>
<managed-bean-name>choose</managed-bean-name>
<managed-bean-class>xmu.edu.cn.ChooseClass</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
...全文
275 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmu_才盛 2008-12-14
  • 打赏
  • 举报
回复
高手快出现
xmu_才盛 2008-12-14
  • 打赏
  • 举报
回复
分不多了,请知道的帮忙解决一下吧,我卡住快4天了

今天又搞了一中类似的方法,还是不能绑定事件

ExpressionFactory ef=application.getExpressionFactory();
ELContext elContext =FacesContext.getCurrentInstance().getELContext();
Class[] c = new Class[1];
c[0]=ActionEvent.class;

MethodExpressionActionListener actionListener =
new MethodExpressionActionListener(ef.createMethodExpression(elContext,"# {choose.testEl}",null, c));

chooseButtons[i].addActionListener(actionListener);
chooseButtons[i].setId("Button"+i);
xmu_才盛 2008-12-14
  • 打赏
  • 举报
回复
有国外论坛说是component id 的问题 ,不断的重建组建,需要id才能绑定 事件 ,
但是我确实是有设id 啊

ExpressionFactory ef=application.getExpressionFactory();
ELContext elContext =FacesContext.getCurrentInstance().getELContext();
Class[] c = new Class[0];
MethodExpression me = ef.createMethodExpression(elContext,"#{choose.testEl}", Void.TYPE, c);
chooseButton.setActionExpression(me);
chooseButton.setId("Button"+i);
就这块貌似那里有不对?
landyshouguo 2008-12-14
  • 打赏
  • 举报
回复
lz 顶!
xmu_才盛 2008-12-14
  • 打赏
  • 举报
回复
没人理我吗

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧