【问题标题】:Checkbox's onchange method not working with jsf and javascriptCheckbox 的 onchange 方法不适用于 jsf 和 javascript
【发布时间】:2011-10-23 18:58:39
【问题描述】:

我的代码如下,

JSF:

<h:selectBooleanCheckbox id="bundleAdded" value="#{accountAdjustmentBean.bundleAdded}"
       required="true" onchange="if(this.checked != bundleAdded)  {
             alert('Click works')} 
             else { alert('Not worked!') }"/>
<h:message styleClass="errors" for="bundleAdded"/>

我的后盾:

public class AccountAdjustmentsBean extends BaseBean {
   private boolean bundleAdded;
   // public setters, getters and other stuffs
}

face-config.xml:

<managed-bean>
    <description>
        Backing bean used do account adjustments
    </description>
    <managed-bean-name>accountAdjustmentBean</managed-bean-name>
    <managed-bean-class>beyondm.bi.customercare.view.bean.AccountAdjustmentsBean</managed-bean-class>
    <!-- NOTE!: proper behaviour of this bean relies on being created for each request -->
    <managed-bean-scope>request</managed-bean-scope>
    <managed-property>
        <property-name>serviceLocator</property-name>
        // propagates.......

当我选中该框时,没有警报。问题出在哪里?我想不通。谁能指出来?

谢谢!

【问题讨论】:

    标签: java javascript html jsf


    【解决方案1】:

    此条件无效: if(this.checked != bundleAdded) 我认为您只需要这样做: if(this.checked)

    如果您试图查看值 (bundleAdded) 是否已实际设置,那么您不应该使用 Javascript 来执行此操作,因为这仅在客户端(当然,除非您使用 Ajax,但查看您的示例我看不出你为什么想要)。

    【讨论】:

    • 不,要求是,如果 bean 实例值(true/false)和检查按钮值(true/false)之间存在差异,则仅应触发警报。不是仅检查框值!
    • 在提交表单之前,或者除非您使用 Ajax 在更改值时提交复选框输入,否则您将无法判断有什么不同。
    【解决方案2】:

    我不知道 JSF,但恕我直言,应该是

    if(this.checked && this.value=='bundleAdded'){alert('Worked');}else{alert('failed');}
    

    【讨论】:

      【解决方案3】:

      您期望bundleAdded 属性神奇地作为一个JavaScript 变量出现在onclick 函数范围内。这不是真的。 Java/JSF 和 JavaScript 不在同一个环境中运行。您应该将 Java/JSF 更多地视为 HTML/CSS/JS 代码生成器。 Java/JSF 在 webserver 中运行,生成 HTML/CSS/JS 并将其发送到 webbrowser。 HTML/CSS/JS 在网络浏览器中运行。

      您需要让 Java/JSF 使用 EL 打印 bundleAdded 属性值。

      onclick="if(this.checked != #{accountAdjustmentBean.bundleAdded}) ..."
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        相关资源
        最近更新 更多