我正在使用JSF 2.0,我想在单击ace:textEntry时调用Java控制器中定义的函数。
我以这种方式尝试过:
<ace:textEntry readonly="true" value="#{myController.getValue()}"
onclick="#{myController.myFunc()}"/>
但是当我打开页面时,click事件会立即被调用。
所以,我尝试了:
<ace:textEntry readonly="true" value="#{myController.getValue()}">
<ace:ajax event="click" listener="#{myController.myFunc()}"/>
</ace:textEntry>
但是我的页面没有显示。
还有另一种方法来实现此行为吗?
PS:我也可以使用类似的JSF组件代替ace:textEntry。
答案 0 :(得分:2)
首先,您不直接在JSF中访问获取方法以获得值支持-您访问属性。其次,您应该使用正确的签名来调用侦听器。为了更正您的示例,我将首先像这样重写调用,
<ace:textEntry readonly="true" value="#{myController.value}">
<ace:ajax event="click" listener="#{myController.myFunc}"/>
</ace:textEntry>
然后像这样定义MyController;
@Named
@ViewScoped
public class MyController {
private value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public void myFunc(javax.faces.event.AjaxBehaviorEvent event) {
/* Do somethinig here... */
}
}