Кнопка отправки JSF не работает - PullRequest
1 голос
/ 15 июня 2010

Я использую hx:commandExButton IBM Faces Client Framework для вызова моего метода. Но метод не вызывается. Но если я использую immediate="true", мне звонят. Но, как вы все знаете, моя модель не будет обновляться, поэтому она мне не нужна.

Кто-нибудь сталкивался с этим? Отметьте 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>

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

У меня была похожая проблема при обновлении чужого кода с JSF 1.1 до JSF 1.2 (работающей на Websphere Application Server 7.0), в результате hx:commandExButton не вызывал метод. Кнопка была заключена в тег hx:jspPanel. Когда я удалил этот тег, кнопка сработала бы. К сожалению для меня, мне нужен этот тег hx:jspPanel для отображения различных тем. Я думаю, мне придется придумать другой способ выбора между темами. Отстой.

Обновление:

Мне удалось заменить hx:jspPanel на h:panelGroups в JSF 1.2, и все заработало. Уф!

1 голос
/ 15 июня 2010

Но если я использую immediate="true", его называют

Другими словами, он отлично работает, когда не-1006 * входные значения не собираются, проверяются, преобразуются и обновляются в модели. Так что-то там не получилось. Я вижу, что вы добавили <h:messages/>, поэтому вы должны получать уведомления о любых ошибках валидации / конвертации. Вы также обратили на это внимание?

0 голосов
/ 15 июля 2013

Решение / Исправление

Решение 1: изменение JSP - необходимо поместить h: commandLink или hx: commandExButton вне цикла hx: jspPanel. Воздействие. Может потребоваться изменение дизайна интерфейса (внешний вид), требующее реализации этого решения.

Solution2: изменение JSP - необходимо заменить hx: jspPanel на h: panelGroup Влияние: нет изменений в дизайне пользовательского интерфейса, требующих реализации этого решения.

...