相关疑难解决方法(0)

如何在不阻止动作和actionListener被调用的情况下禁用h:commandButton?

我有一个简单的脚本标记,其中包含一个函数,我将其包含在html主体的底部.此脚本只是禁用提交按钮.然后我有一个onclick调用该函数的事件.

我在5个不同的页面中有这个代码,它适用于五个中的3个.

这是代码:

<!-- more non-important html -->

<h:commandButton id="buttonToDisable" 
    value="some text"
    action="#{myBean.myBeansAction}" 
    actionListener="#{myBean.myBeansActionListener}" 
    onclick="disableButton()">

    <!-- I also have an f:param in some of these pages but I didn't 
    think that would matter -->

</h:commandButton>

<!--  more non-important html -->

<script>
    function disabledButton() {
        document.getElementById("myForm:buttonToDisable").disabled = 'true';
    }
</script>
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.该做的,不工作的页面之间的唯一区别是,actionactionListeners不同类型的咖啡豆和一些有f:params和别人不一样.

java jsf jsp jsf-2

3
推荐指数
2
解决办法
2万
查看次数

JSF a4j:设置'disabled'时commandButton不工作

当我在a4j:commandButton上包含'disabled'属性时,不执行按钮的操作.取消"禁用"属性会使其正常工作.我没有做任何特殊验证(我知道)并且没有看到任何验证错误消息.

这是我的页面的一部分:

<t:dataTable id="myTable"
             var="region"
             value="#{MyPageBackingBean.regions}"
             width="100%">

...

<a4j:commandButton value="Update"
                   action="#{region.doUpdate}"
                   oncomplete="alert('done');"
                   disabled="#{!empty region && region.messageEmpty}"
                   immediate="true"/>

...

</t:dataTable>
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?谢谢!

编辑:

我尝试在t:dataTable上设置preserveDataModel ="true"无效.

我还做了一个测试有一个a4j:commandButton和没有数据表的文本框,但仍然没有触发支持bean操作:

      <h:form>
     <a4j:region>
        <a4j:outputPanel id="testregion">
        <h:messages id="messages"/>

                          <a4j:status>
                             <f:facet name="start">
                                <h:graphicImage value="/images/progress_indicator.gif"/>
                             </f:facet>
                          </a4j:status>

                       <h:inputTextarea
                             rows="5"
                             value="#{MyPageBackingBean.myValue}"
                             style="width:100%; border: 1px solid #99CCFF;">
                          <a4j:support event="onkeyup"
                                       reRender="testregion"
                                       eventsQueue="messageModificationQueue"
                                       ignoreDupResponses="true"
                                       requestDelay="500"/>
                       </h:inputTextarea>

                       <a4j:commandButton id="doDelete"
                                          value="Delete"
                                          action="#{MyPageBackingBean.dummy}"
                                          reRender="testregion"
                                          disabled="#{empty MyPageBackingBean.myValue}"/>
                    <h:outputText value="#{MyPageBackingBean.myValue}"/>
        </a4j:outputPanel>
     </a4j:region>
  </h:form>
Run Code Online (Sandbox Code Playgroud)

以下是用于测试的新支持bean代码:

private String m_myValue = null;
   public String getMyValue()
   {
      return m_myValue;
   }
   public void setMyValue(String …
Run Code Online (Sandbox Code Playgroud)

java jsf richfaces java-ee ajax4jsf

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×2

jsf ×2

ajax4jsf ×1

java-ee ×1

jsf-2 ×1

jsp ×1

richfaces ×1