2010-06-15 154 views
1

我正在使用IBM Faces Client Framework的hx:commandExButton來調用我的方法。但該方法沒有被調用。但是如果我使用immediate="true"它會被調用。但是,大家都知道,我的模型不會更新,所以對我沒有用處。jsf提交按鈕不起作用

有沒有人遇到過這個?檢查hx:commandExButton id="btnSearch"

<%-- tpl:metadata --%> 
    <%-- jsf:pagecode language="java" location="/src/pagecode/view/costestimation/SearchAssignee.java" --%><%-- /jsf:pagecode --%> 
<%-- /tpl:metadata --%> 
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%><%@taglib 
    prefix="h" uri="http://java.sun.com/jsf/html"%><%@taglib 
    uri="http://www.ibm.com/jsf/html_extended" prefix="hx"%><%@taglib 
    uri="http://java.sun.com/portlet_2_0" prefix="portlet"%><%@taglib 
    uri="http://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model" 
    prefix="portlet-client-model"%><%@page language="java" 
    contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%><portlet-client-model:init> 
    <portlet-client-model:require module="ibm.portal.xml.*" /> 
    <portlet-client-model:require module="ibm.portal.portlet.*" /> 
</portlet-client-model:init> 
<portlet:defineObjects /> 
<link rel="stylesheet" type="text/css" title="Style" 
    href="../../theme/stylesheet.css"> 
<f:view> 
    <f:loadBundle var="giamsBundle" 
     basename="com.ibm.costprojectionportlet.nl.GIAMSResourceBundle" /> 
    <hx:viewFragment id="viewFragment1"> 

     <hx:scriptCollector id="scriptCollector1"> 

      <script language="JavaScript" 
       src='<%=renderResponse.encodeURL(renderRequest 
             .getContextPath() 
             + "/js/common.js")%>'></script> 

      <h:outputText value="<br/>" escape="false" /> 

      <h:outputText id="titleSearch" styleClass="outputText" 
       value="#{giamsBundle['title.search']}" escape="false"></h:outputText> 

      <h:outputText value="<br/>" escape="false" /> 

      <h:messages style="font-weight:bold;color:red;" layout="table"></h:messages> 

      <hx:panelSection styleClass="panelSection" title="SearchCriteria" 
       id="searchCriteriaPanel" initClosed="false" 
       style="border-width: thin; border-style: groove"> 
       <h:form styleClass="form" id="searchCriteriaForm"> 
        <h:messages style="font-weight:bold;color:red;" layout="table"></h:messages> 
        <h:panelGrid columns="2" cellpadding="1" border="0" width="100%"> 
         <h:column> 
          <hx:panelFormBox helpPosition="over" labelPosition="left" 
           styleClass="panelFormBox" id="formBoxLeft"> 
           <hx:formItem styleClass="formItem" id="frmLastName" 
            label="#{giamsBundle['lbl.search.lastname']}" escape="false"> 
            <h:inputText styleClass="inputText" size="20" id="txtLastName" 
             value="#{pc_SearchAssignee.assignee.lastName}"> 
            </h:inputText> 
           </hx:formItem> 

           <hx:formItem styleClass="formItem" id="frmHomeCountrySerial" 
            label="#{giamsBundle['lbl.search.homecountryserial']}" 
            escape="false"> 
            <h:inputText styleClass="inputText" size="20" 
             id="txtHomeCountrySerial" 
             value="#{pc_SearchAssignee.assignee.companyDetails.homeCountrySerial}"> 
            </h:inputText> 
           </hx:formItem> 

           <hx:formItem styleClass="formItem" id="frmHomeCountry" 
            label="#{giamsBundle['lbl.search.homecountry']}" escape="false"> 
            <h:selectOneMenu styleClass="selectOneMenu" id="ddHomeCountry" 
             value=""> 
             <f:selectItems value="#{pc_referenceData.telephoneTypeList}" /> 
            </h:selectOneMenu> 
           </hx:formItem> 

           <hx:formItem styleClass="formItem" id="frmHomeBusinessUnit" 
            label="#{giamsBundle['lbl.search.homebusunit']}" escape="false"> 
            <h:selectOneMenu styleClass="selectOneMenu" value="" 
             id="ddHomeBusinessUnit"> 
             <f:selectItems value="#{pc_referenceData.telephoneTypeList}" /> 
            </h:selectOneMenu> 
           </hx:formItem> 

           <hx:formItem styleClass="formItem" id="frmforButtons" label="" 
            escape="false"> 
            <h:panelGroup> 
             <hx:commandExButton styleClass="commandExButton" 
              id="btnSearch" value="#{giamsBundle['btn.search']}" 
              action="#{pc_SearchAssignee.searchAssignee}"> 
             </hx:commandExButton> 
             <hx:commandExButton styleClass="commandExButton" 
              id="btnCancel" value="#{giamsBundle['btn.cancel']}" 
              action="#{pc_SearchAssignee.searchAssignee}"> 
             </hx:commandExButton> 
            </h:panelGroup> 
           </hx:formItem> 

          </hx:panelFormBox> 
         </h:column> 

         <h:column> 
          <hx:panelFormBox helpPosition="over" labelPosition="left" 
           styleClass="panelFormBox" id="formBoxRight"> 

           <hx:formItem styleClass="formItem" id="frmFirstName" 
            label="#{giamsBundle['lbl.search.firstname']}" escape="false"> 
            <h:inputText styleClass="inputText" size="20" id="txtFirstName" 
             value="#{pc_SearchAssignee.assignee.firstName}"> 
            </h:inputText> 
           </hx:formItem> 

           <hx:formItem styleClass="formItem" id="frmHomeNotesEmail" 
            label="#{giamsBundle['lbl.search.homenotesemail']}" 
            escape="false"> 
            <h:panelGroup> 
             <h:inputText styleClass="inputText" size="20" 
              id="txtHomeNotesEmail" 
              value="#{pc_SearchAssignee.assignee.lotusNotesId}"> 
             </h:inputText> 
            </h:panelGroup> 
           </hx:formItem> 

           <hx:formItem styleClass="formItem" id="frmHomeLocation" 
            label="#{giamsBundle['lbl.search.homeloc']}" escape="false"> 
            <h:inputText styleClass="inputText" size="20" 
             id="txtHomeLocation" 
             value="#{pc_SearchAssignee.assignee.homeAddress.cityName}"> 
            </h:inputText> 
           </hx:formItem> 

           <hx:formItem styleClass="formItem" id="blank" label="" 
            escape="false"> 
            <h:outputText id="txtblank" escape="false"></h:outputText> 
           </hx:formItem> 

          </hx:panelFormBox> 
         </h:column> 
        </h:panelGrid> 
       </h:form> 

       <f:facet name="opened"> 
        <hx:jspPanel id="jspPanelMainOpen"> 
         <hx:graphicImageEx id="imageExMainOpen" 
          styleClass="graphicImageEx" align="middle" 
          value="/theme/img/form_header.GIF" width="100%" height="20"></hx:graphicImageEx> 

        </hx:jspPanel> 
       </f:facet> 

      </hx:panelSection> 



      <h:outputText id="titleResults" styleClass="outputText" 
       value="#{giamsBundle['lbl.search.results']}" escape="false"></h:outputText> 

      <h:outputText value="<br/>" escape="false" /> 

      <hx:dataTableEx border="0" cellspacing="2" width="100%" 
       columnClasses="columnClass1" headerClass="headerClass" 
       footerClass="footerClass" rowClasses="rowClass1, rowClass2" 
       styleClass="dataTableEx" id="searchAssignee" 
       value="#{pc_SearchAssignee.assigneeList}" var="searchitr" 
       binding="#{pc_SearchAssignee.searchDataTable}" 
       rendered="#{pc_SearchAssignee.render}"> 

       <hx:columnEx id="columnEx1"> 
        <f:facet name="header"> 
         <hx:panelBox styleClass="panelBox" id="selectPanelBox"> 
          <hx:outputSelecticons styleClass="outputSelecticons" 
           id="selectCheckBox"></hx:outputSelecticons> 
         </hx:panelBox> 
        </f:facet> 

        <hx:inputRowSelect styleClass="inputRowSelect" 
         value="#{searchitr.selected}" id="rowSelect"></hx:inputRowSelect> 
        <f:facet name="header"></f:facet> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx2"> 
        <f:facet name="header"> 
         <h:outputText id="lblEeId" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.eeid']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtEEID" 
         value="#{searchitr.employeeID}"></h:inputText> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx3"> 
        <f:facet name="header"> 
         <h:outputText id="lblFirstName" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.firstname']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtFirstName" 
         value="#{searchitr.firstName}"></h:inputText> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx4"> 
        <f:facet name="header"> 
         <h:outputText id="lblLastName" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.lastname']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtLastName" 
         value="#{searchitr.lastName}"></h:inputText> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx5"> 
        <f:facet name="header"> 
         <h:outputText id="lblHomeNotesEmail" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.homenotesemail']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtHomeNotesEmail" 
         value="#{searchitr.homeAddress.addressLine1}"></h:inputText> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx6"> 
        <f:facet name="header"> 
         <h:outputText id="lblHomeCountry" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.homecountry']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtHomeCountry" 
         value="#{searchitr.homeAddress.addressLine1}"></h:inputText> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx7"> 
        <f:facet name="header"> 
         <h:outputText id="lblHomeLocation" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.homeloc']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtHomeLocation" 
         value="#{searchitr.homeTaxID}"></h:inputText> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx8"> 
        <f:facet name="header"> 
         <h:outputText id="lblHomeBusUnit" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.homebusunit']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtHomeBusUnit" 
         value="#{searchitr.homeTaxID}"></h:inputText> 
       </hx:columnEx> 

       <hx:columnEx id="columnEx9"> 
        <f:facet name="header"> 
         <h:outputText id="lblAssignStatus" styleClass="outputText" 
          value="#{giamsBundle['lbl.search.assignmentstatus']}"></h:outputText> 
        </f:facet> 

        <h:inputText styleClass="inputText" id="dttxtAssignStatus" 
         value="#{searchitr.homeTaxID}"></h:inputText> 
       </hx:columnEx> 

      </hx:dataTableEx> 

      <h:outputText value="<br/>" escape="false" /> 

      <hx:commandExButton type="submit" styleClass="commandExButton" 
       rendered="#{pc_SearchAssignee.render}" id="btnContinue" 
       value="#{giamsBundle['btn.continue']}" 
       action="#{pc_SearchAssignee.searchAssignee}"> 
      </hx:commandExButton> 

     </hx:scriptCollector> 
    </hx:viewFragment> 
</f:view> 

回答

1

但是,如果使用immediate="true"它越來越被稱爲

換句話說,它工作正常時,非immediate輸入值沒有得到收集,驗證,轉換和在模型中更新。所以有些失敗了。我看到你已經添加了<h:messages/>,所以你應該得到任何驗證/轉換錯誤的通知。你也注意到了嗎?

1

我有一個類似的問題,將其他人的代碼從JSF 1.1升級到JSF 1.2(運行在Websphere Application Server 7.0上),導致hx:commandExButton不能調用該方法。該按鈕被包含在hx:jspPanel標籤中。當我刪除這個標籤時,按鈕將起作用。不幸的是,我需要這個hx:jspPanel標籤來呈現不同的主題。我想我將不得不想出不同的方式來選擇主題。吮吸。

更新:

我能夠更換HX:用H jspPanel:在JSF 1.2和一切工作panelGroups。呼!

+0

這個答案沒有用,因爲他的commandExButton不在jspPanel中... – Blaskovicz 2012-11-11 22:05:47

0

解決方案/修復

解決方法1:JSP變化 - 需要放置H:commandLink或HX:commandExButton的HX以外:jspPanel循環。 影響:可能會有UI設計更改(請看&的感覺)需要實施此解決方案。

解決方案2:JSP更改 - 需要用h:panelGroup替換hx:jspPanel 影響:沒有UI設計更改需要實施此解決方案。