在我的JSF-Page中,我有一个带有浏览按钮的输入字段(其部分为<%@ taglib prefix =“sap”uri =“http://java.sap.com/jsf/html/extended “%>”
<sap:commandInputText>
<f:attribute name="upperCase" value="false" />
<f:actionListener type="PackageAndNameOfAClass"/>
</sap:commandInputText>
现在我想以编程方式创建这样的UI-Component。
这不是问题。但我不知道如何handel
UICommandInputText inputField.setActionListener想要一个Method-Expression
UICommandInputText inputField.addActionListener想要一个Action-Listener
但我只有类的名称,并将它放在这个“type-Attribute”
中有什么想法吗?
答案 0 :(得分:0)
我在所有MB扩展的Generic managedBean中使用此方法。 (或者你也可以在 Util 类中使它静止)
public MethodExpression createAction(String actionExpression, Class<?> returnType) {
FacesContext context = FacesContext.getCurrentInstance();
return context.getApplication().getExpressionFactory()
.createMethodExpression(context.getELContext(), actionExpression, returnType, new Class[0]);
}
public MethodExpressionActionListener createActionListener(String actionListenerExpression) {
FacesContext context = FacesContext.getCurrentInstance();
return new MethodExpressionActionListener(context.getApplication().getExpressionFactory()
.createMethodExpression(context.getELContext(), actionListenerExpression, null, new Class[] {ActionEvent.class}));
}
你这样称呼它:
htmlCommandButton.addActionListener(this.createActionListener("#{questionarioMB.enviarFormulario}"));
一个包含有用的JSF方法的网站:
http://www.javacodegeeks.com/2012/04/5-useful-methods-jsf-developers-should.html