2016-02-26 59 views
0

所以我本来我有一个所有命令链接形式停止工作AJAX请求后

<h:selectBooleanCheckbox value="#salesExpenseController.addSalesExpense.fixed}" > 
<h:ajax event="change" listener="#{salesExpenseController.checkFixed()}" render = "addBidPrice addBidTotal" /> 
</h:selectBooleanCheckbox> 

监听功能:

public String checkFixed() { 
     if (this.getAddSalesExpense().getFixed()) { 
      if (this.subOperation.equals(_add)) { 
       getAddSalesExpense().setBidPrice(BigDecimal.ZERO); 
      } 
      if (this.subOperation.equals(_edit)) { 
       getEditSalesExpense().setBidPrice(BigDecimal.ZERO); 
      } 

     } else { 
      if (this.subOperation.equals(_add)) { 
       getAddSalesExpense().setBidTotal(BigDecimal.ZERO); 
      } 
      if (this.subOperation.equals(_edit)) { 
       getEditSalesExpense().setBidTotal(BigDecimal.ZERO); 
      } 

     } 


     return _viewTimberSale; 
    } 

每当我点击我的复选框,在表单中的所有其他命令链接会不行。我在我的checkFixed()中放置了一个System.out.println(),并且ajax请求没有到达函数或给出任何错误,就像没有任何事情发生一样。

我改变我的复选框,此修复了这个问题:

<h:selectBooleanCheckbox value="#{salesExpenseController.addSalesExpense.fixed}" > 
            <p:ajax event="change" listener="#{salesExpenseController.checkFixed()}" update = "addBidPrice addBidTotal" /> 
           </h:selectBooleanCheckbox> 

而且一切正常,这也正是它应该。

什么是可能的解释?

这里是形式的故障部件,我不能发布它会超过30,000个字符的整个形式:

<!-- START SALES EXPENSE --> 
        <h:panelGroup layout="block" rendered="#{timberSaleController.operation.equals(timberSaleController.saleExpense)}"> 
         <h1>Sale Expense</h1> 
         <h:panelGroup layout="block"> 
          <h:commandLink styleClass="actionLinkButton" value="#{messages.Link_add}" action="#{salesExpenseController.prepareAddSalesExpense(timberSaleController.selected)}" rendered="#{salesExpenseController.subOperation == null}" /> 
          <h:commandLink styleClass="actionLinkButton" value="#{messages.Link_cancel}" action="#{salesExpenseController.resetValues()}" rendered="#{salesExpenseController.subOperation != null}" /> 
          <br/> 
          <br/> 
         </h:panelGroup> 



         <!--SALES EXPENSE TABLE --> 
         <h:panelGroup layout="block" rendered="#{salesExpenseController.subOperation == null}"> 
          <h:dataTable value="#{salesExpenseController.getSaleList(timberSaleController.selected)}" var="exp" 
             border="0" 
             cellpadding="3" 
             cellspacing="0" 
             rowClasses="jsfcrud_odd_row,jsfcrud_even_row" 
             rules="all" 
             style="border:solid 1px; text-align: center;" 
             rendered ="#{salesExpenseController.getSaleList(timberSaleController.selected).size() > 0}" 
             > 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_description}" /> 
            </f:facet> 
            <h:outputText value="#{exp.description}" > 
            </h:outputText> 
           </h:column> 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_category}" /> 
            </f:facet> 
            <h:outputText value="#{timberSaleController.formatString(exp.expenseCategory)}" > 
            </h:outputText> 
           </h:column> 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_fixedPrice}" /> 
            </f:facet> 
            <h:outputText value="#{exp.fixed}" > 

            </h:outputText> 
           </h:column> 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_bidPrice}" /> 
            </f:facet> 
            <h:outputText value="#{exp.bidPrice}" > 
             <f:convertNumber integerOnly="true" type="currency" /> 
            </h:outputText> 
           </h:column> 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_bidTotal}" /> 
            </f:facet> 
            <h:outputText value="#{exp.bidTotal}" > 
             <f:convertNumber integerOnly="true" type="currency" /> 
            </h:outputText> 
           </h:column> 
           <h:column rendered = "#{exp.actualPrice != null}"> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_actualPrice}" /> 
            </f:facet> 
            <h:outputText value="#{exp.actualPrice}" > 
             <f:convertNumber integerOnly="true" type="currency" /> 
            </h:outputText> 
           </h:column> 
           <h:column rendered = "#{exp.actualTotal != null}"> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_actualTotal}" /> 
            </f:facet> 
            <h:outputText value="#{exp.actualTotal}" > 
             <f:convertNumber integerOnly="true" type="number" /> 
            </h:outputText> 
           </h:column> 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_lastEdited}" /> 
            </f:facet> 
            <h:outputText value="#{exp.lastEdited}" > 
             <f:convertDateTime type="date" dateStyle="short" /> 
            </h:outputText> 
           </h:column> 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="#{messages.Title_lastEditedBy}" /> 
            </f:facet> 
            <h:outputText value="#{exp.lastEditedBy}" > 

            </h:outputText> 
           </h:column> 
           <h:column> 
            <f:facet name="header"> 
             <h:outputText value="&nbsp;" /> 
            </f:facet> 
            <h:commandLink value="#{messages.Link_edit}" action ="#{salesExpenseController.editSalesExpense(exp)}" /> 
            <br/> 
            <h:commandLink value="#{messages.Link_complete}" action="#{salesExpenseController.prepareCompleteSalesExpense(exp)}" /> 
           </h:column> 
          </h:dataTable> 
          <br/> 
          <br/> 
          <br/> 

          <h:panelGroup layout="block"> 
           <table 
            border="0" 
            cellpadding="3" 
            cellspacing="0" 
            rowClasses="jsfcrud_odd_row,jsfcrud_even_row" 
            rules="all" 
            style="border:solid 1px; text-align: center;" 
            > 
            <tr> 
             <th>Categories</th> 
             <th>Average Bid Price</th> 
             <th>Bid Total</th> 
            </tr> 
            <ui:repeat value="#{salesExpenseController.getDistinctCategoriesBySale(timberSaleController.selected)}" var="cat"> 
             <tr> 
              <td> 
               <h:outputText value="#{timberSaleController.formatString(cat)}" /> 
              </td> 
              <td> 
               <h:outputText value="#{salesExpenseController.getAverageExpensePriceByCategoryAndSale(cat , timberSaleController.selected)}" > 
                <f:convertNumber integerOnly="true" type="currency"/> 
               </h:outputText> 
              </td> 
              <td> 
               <h:outputText value="#{salesExpenseController.getTotalExpenseByCategoryAndSale(cat, timberSaleController.selected)}" > 
                <f:convertNumber integerOnly="true" type="currency"/> 
               </h:outputText> 
              </td> 
             </tr> 
            </ui:repeat> 
            <tr> 
             <td> 
              <h:outputText value ="Totals" /> 
             </td> 

             <td> 
              <h:outputText value ="#{salesExpenseController.getAverageBidPriceBySale(timberSaleController.selected)}" > 
               <f:convertNumber integerOnly="true" type="currency"/> 
              </h:outputText> 
             </td> 
             <td> 
              <h:outputText value ="#{salesExpenseController.getTotalBidTotalBySale(timberSaleController.selected)}" > 
               <f:convertNumber integerOnly="true" type="currency"/> 
              </h:outputText> 
             </td> 
            </tr> 
           </table> 

          </h:panelGroup> 



         </h:panelGroup> 


         <!--SALES EXPENSE ADD --> 
         <h:panelGroup layout="block" rendered="#{salesExpenseController.subOperation.equals(timberSaleController.getAdd())}"> 
          <h:panelGrid columns="3"> 
           <h:outputLabel value="#{messages.Title_description}" /> 
           <h:inputTextarea value="#{salesExpenseController.addSalesExpense.description}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Title_category}" /> 
           <h:selectOneMenu value="#{salesExpenseController.addSalesExpense.expenseCategory}"> 
            <f:selectItems value="#{timberSaleController.dropDownHelper.getExpenseTypeSelectOne()}" /> 
           </h:selectOneMenu> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_fixed}" /> 
           <h:selectBooleanCheckbox value="#{salesExpenseController.addSalesExpense.fixed}" > 
            <p:ajax event="change" listener="#{salesExpenseController.checkFixed()}" update = "addBidPrice addBidTotal" /> 
           </h:selectBooleanCheckbox> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_bidPrice}" /> 
           <h:inputText id="addBidPrice" value="#{salesExpenseController.addSalesExpense.bidPrice}" disabled="#{salesExpenseController.addSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_bidTotal}" /> 
           <h:inputText id="addBidTotal" value="#{salesExpenseController.addSalesExpense.bidTotal}" disabled="#{!salesExpenseController.addSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:commandLink styleClass="actionLinkButton" value="#{messages.Link_add}" action="#{salesExpenseController.addSaleExpenseToSale()}" /> 
          </h:panelGrid> 
         </h:panelGroup> 

         <!--SALES EXPENSE EDIT --> 
         <h:panelGroup layout="block" rendered="#{salesExpenseController.subOperation.equals(timberSaleController.getEdit())}"> 
          <h:panelGrid columns="3"> 
           <h:outputLabel value="#{messages.Title_description}" /> 
           <h:inputTextarea value="#{salesExpenseController.editSalesExpense.description}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Title_category}" /> 
           <h:selectOneMenu value="#{salesExpenseController.editSalesExpense.expenseCategory}"> 
            <f:selectItems value="#{timberSaleController.dropDownHelper.getExpenseTypeSelectOne()}" /> 
           </h:selectOneMenu> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_fixed}" /> 
           <h:selectBooleanCheckbox value="#{salesExpenseController.editSalesExpense.fixed}" > 
            <p:ajax event="change" listener="#{salesExpenseController.checkFixed()}" update="editBidPrice editBidTotal" /> 
           </h:selectBooleanCheckbox> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_bidPrice}" /> 
           <h:inputText id="editBidPrice" value="#{salesExpenseController.editSalesExpense.bidPrice}" disabled="#{salesExpenseController.editSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_bidTotal}" /> 
           <h:inputText id="editBidTotal" value="#{salesExpenseController.editSalesExpense.bidTotal}" disabled="#{!salesExpenseController.editSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:commandLink styleClass="actionLinkButton" value="#{messages.Link_complete}" action="#{salesExpenseController.completeEditSalesExpense()}" /> 
           <h:commandLink styleClass="actionLinkButton" value="#{messages.Link_destroy}" action="#{salesExpenseController.destroyEditSalesExpense()}" /> 
          </h:panelGrid> 
         </h:panelGroup> 

         <!-- 
         COMPLETE LOG SALE 
         --> 
         <h:panelGroup layout="block" rendered="#{salesExpenseController.subOperation.equals(timberSaleController.getComplete())}"> 
          <h:panelGrid columns="3"> 
           <h:outputLabel value="#{messages.Title_description}" /> 
           <h:inputTextarea disabled="true" value="#{salesExpenseController.completeSalesExpense.description}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Title_category}" /> 
           <h:selectOneMenu disabled="true" value="#{salesExpenseController.completeSalesExpense.expenseCategory}"> 
            <f:selectItems value="#{timberSaleController.dropDownHelper.getExpenseTypeSelectOne()}" /> 
           </h:selectOneMenu> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_fixed}" /> 
           <h:selectBooleanCheckbox disabled="true" value="#{salesExpenseController.completeSalesExpense.fixed}" > 
            <p:ajax event="change" listener="#{salesExpenseController.checkFixed()}" update="" /> 
           </h:selectBooleanCheckbox> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_bidPrice}" /> 
           <h:inputText value="#{salesExpenseController.completeSalesExpense.bidPrice}" disabled="#{salesExpenseController.completeSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_actualPrice}" /> 
           <h:inputText value="#{salesExpenseController.completeSalesExpense.actualPrice}" disabled ="#{salesExpenseController.completeSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_bidTotal}" /> 
           <h:inputText value="#{salesExpenseController.completeSalesExpense.bidTotal}" disabled="#{!salesExpenseController.completeSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputLabel value="#{messages.Label_actualTotal}" /> 
           <h:inputText value="#{salesExpenseController.completeSalesExpense.actualTotal}" disabled ="#{!salesExpenseController.completeSalesExpense.fixed}" /> 
           <h:outputText value="&nbsp;" /> 


           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:outputText value="&nbsp;" /> 
           <h:commandLink styleClass="actionLinkButton" value="#{messages.Link_complete}" action="#{salesExpenseController.completeCompleteSalesExpense()}" /> 
          </h:panelGrid> 
         </h:panelGroup> 




        </h:panelGroup> 
        <!-- END ADD SALESEXPENSE --> 
+0

如果您阅读了您的标题并查看了您发布的代码,您是否认为代码中缺少某些内容? – Kukeltje

+0

TLDR;你不能创建[mcve]吗? – Kukeltje

+0

查看你的JS控制台的线索,只要你点击“不起作用” – kolossus

回答

0

我不知道primeFaces理念和它如何执行AJAX的命令,但是标准的AJAX监听梅索德不应该返回任何对象。但这样的事情:

public final void checkFixed(AjaxBehaviorEvent event){ 
    ..... 
} 

并且你使用这样的:

listener="#{salesExpenseController.checkFixed}" 

所以如果你的观点抛出任何JS-错误所导致的任何Java异常喜欢梅索德没有发现......等等,这JS错误将打破所有的命令链接/按钮等。也许primeFaces接受类似你的监听器的方法,所以当你使用primefaces ajax命令时不会出现任何错误。