鼠标事件如何在primefaces中工作?

时间:2013-12-01 17:46:50

标签: jsf jsf-2 primefaces

我正在使用primefaces 4.0和jsf 2.0开发一个java web应用程序。 我有一个文本标签和它的文本框。当用户处于编辑模式,并且想要修改特定文本框的值时,当用户在文本框中输入新值时,文本框的旧值应显示在右侧。所以我添加一个输出文本,在加载时呈现false。我想在用户单击文本框(id =“customer_customername”)时触发此输出文本(id =“test”)。所以渲染应该改变为相等。谁能告诉我怎么做?在我的后端,我有一个实现,dao和服务的接口。

<h:panelGrid id="detail1" columns="2" styleClass="grid" columnClasses="label,value">

     <h:outputText value="#{customermsgs['customer.customername.title']}:" />

     <h:inputText id="customer_customername" value="#   {CustomerComponent.customer.customername}" onclick="#{CustomerComponent.customername}" label="customer_customername">
          <f:ajax render="detail1" />
     </h:inputText>

     <h:outputText id="test" value="#{CustomerComponent.customer.customername}"    rendered="#{CustomerComponent.visible}"/>
</h:panelGrid>
public class CustomerComponentImpl implements CustomerComponent {

/**
 * Data type variable that provides CRUD operations for Customer entities
 * 
 */


private boolean visible=false;

private String customername;


    public String getCustomername() {
    return customername;
}

public void setCustomername(String customername) {
    setVisible(true);
    this.customername = customername;
}

public boolean isVisible() {
    return visible;
}

public void setVisible(boolean visible) {
    this.visible = visible;
}

    //some codes goes here.

注意:我也在我的界面中实现了该方法。

onclick事件无效。看起来它不会触发!有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

此,

<h:inputText ... onclick="#{CustomerComponent.customername}">

绝对不是你的想法。在当前形式中,填充时,它只会导致JavaScript错误,因为#{CustomerComponent.customername}很可能不会返回一段(语法上有效!)JavaScript代码,应该在点击时执行。相反,它更可能返回表示客户名称的字符串。将其打印到JavaScript上下文中时,它只会被解释为未定义的JavaScript变量。

对于您的具体功能要求,<f:ajax>默认仅在change事件中侦听输入组件。您可以相应地设置click属性,将其更改为event。总而言之,这应该按照你的意图行事:

<h:inputText id="customer_customername" value="#{CustomerComponent.customer.customername}" label="customer_customername">
    <f:ajax event="click" render="detail1" />
</h:inputText>