【问题标题】:Trigger listener clicking on ace:textEntry触发侦听器点击 ace:textEntry
【发布时间】:2019-11-24 01:45:11
【问题描述】:

我正在使用 JSF 2.0,我想在单击 ace:textEntry 时调用 Java 控制器中定义的函数。

我是这样尝试的:

<ace:textEntry readonly="true" value="#{myController.getValue()}"
    onclick="#{myController.myFunc()}"/>

但是当我的页面打开时,点击事件会立即被调用。

所以,我尝试了:

<ace:textEntry readonly="true" value="#{myController.getValue()}">
     <ace:ajax event="click" listener="#{myController.myFunc()}"/>
</ace:textEntry>

但我的页面没有呈现。

还有其他方法可以实现这种行为吗?

PS:我也可以使用类似的 JSF 组件来代替 ace:textEntry。

【问题讨论】:

    标签: jsf icefaces


    【解决方案1】:

    首先,您不能直接在 JSF 中访问 getter 以获取值支持 - 您访问的是属性。其次,您应该使用正确的签名调用侦听器。为了更正您的示例,我将首先像这样重写调用,

    <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... */
        }
    }
    

    【讨论】:

    • 完美!非常感谢亚当!
    猜你喜欢
    • 1970-01-01
    • 2012-06-27
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    相关资源
    最近更新 更多