Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF方法总是被调用两次_Jsf_Sorting_Pagination_Jsf 2.2 - Fatal编程技术网

JSF方法总是被调用两次

JSF方法总是被调用两次,jsf,sorting,pagination,jsf-2.2,Jsf,Sorting,Pagination,Jsf 2.2,嗨,我有一个使用视图范围的jsf数据表,它允许排序和分页。 我的问题是,我的BackingBean排序方法总是被调用两次,如果在对同一行进行排序时不进行升序/降序排序,这将不是一个大问题(这使得它过时)。 有没有办法解决这个问题?关于这个问题,我已经读了好几个章节了,但是non在我的案例中帮助了我… 我还试图将其更改为请求范围,但这只会使我的分页消失 这是BackingBean方法,仅从我的facelet链接调用: /** * Changing sorting of list of event

嗨,我有一个使用视图范围的jsf数据表,它允许排序和分页。 我的问题是,我的BackingBean排序方法总是被调用两次,如果在对同一行进行排序时不进行升序/降序排序,这将不是一个大问题(这使得它过时)。 有没有办法解决这个问题?关于这个问题,我已经读了好几个章节了,但是non在我的案例中帮助了我… 我还试图将其更改为请求范围,但这只会使我的分页消失

这是BackingBean方法,仅从我的facelet链接调用:

/**
 * Changing sorting of list of events by columns.
 * 
 * @param event
 *            ActionListener for the sorting field.
 */
public void sort(String sortingAttribute) {
    System.out.println("you called sort: " + ++x);
    if (sortField.equalsIgnoreCase(sortingAttribute)) {
        boolean sortAscHelp = (sortAsc) ? false : true;
        sortAsc = sortAscHelp;

    } else {
        sortField = sortingAttribute;
    }

    try {
        events = (eventListType.equalsIgnoreCase("search")) ?EventManager.getSearchResults(searchTitle, searchDate, searchLocation, sortField, sortAsc, offset, limit) : EventManager.getEventList(eventListType, offset, limit, sortField, sortAsc);
    } catch (DatabaseException e) {
        FacesContext fcxt = FacesContext.getCurrentInstance();
        fcxt.addMessage(component.getClientId(),
                new FacesMessage(e.toString()));
        logger.error("Error while loading the sorted list of  searched events.");
    }
}
我的脸来了:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">

<ui:composition template="../../templates/basicTemplate.xhtml">
<ui:define name="metadata">
    <f:metadata>
        <f:viewParam name="title" value="#{listEventsBean.searchTitle}"/>
        <f:viewParam name="location" value="#{listEventsBean.searchLocation}"/>
        <f:viewParam name="date" value="#{listEventsBean.searchDate}"/>
        <f:viewParam name="eventListType" value="#{listEventsBean.eventListType}"/>
        <f:viewParam name="page" value="#{listEventsBean.page}"/>
        <f:viewParam name="sorting" value="#{listEventsBean.sortField}"/>
        <f:viewAction action="#{listEventsBean.init}"/>
    </f:metadata>
</ui:define>
<ui:define name="content">
<h:form>
   <p style="color:#808080; font-weight:bold; font-size:large">#{msgs.listEvents_events}</p>
   <br/>
   <h:outputText style="color:green" value="#{msgs.listEvents_deleted}" rendered="#{listEventsBean.deleted}"/>

   <h:dataTable id="eventTable" value="#{listEventsBean.getEvents()}" var="event" binding="#{listEventsBean.component}"> 
    <h:column>
        <f:facet name="header">
            <h:commandLink value="#{msgs.listEvents_title}" action="#{listEventsBean.sort('title')}">
            <f:attribute name="sortField" value="title"/>
            </h:commandLink>
        </f:facet>
        <h:outputText value="#{event.title}"/>
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:commandLink value="#{msgs.listEvents_dateStart}" action="#{listEventsBean.sort('startofevent')}">
            <f:attribute name="sortField" value="startOfEvent"/>
            </h:commandLink>
        </f:facet>
        <h:outputText value="#{event.startOfEvent}">
            <f:convertDateTime pattern="#{msgs.longDate}"/>
        </h:outputText>
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:commandLink value="#{msgs.listEvents_dateEnd}" action="#{listEventsBean.sort('endofevent')}">
            <f:attribute name="sortField" value="endOfEvent"/>
            </h:commandLink>
        </f:facet>
        <h:outputText value="#{event.endOfEvent}">
            <f:convertDateTime pattern="#{msgs.longDate}"/>
        </h:outputText>
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:commandLink value="#{msgs.listEvents_price}" action="#{listEventsBean.sort('ticketprice')}">
            </h:commandLink>
        </f:facet>
        <h:outputText value="#{event.ticketPrice}"/>
    </h:column>
    <h:column>
        <f:facet name="header">
            <h:outputText value="#{msgs.listEvents_action}"/>
        </f:facet>
        <h:button id="showDetails" value="#{msgs.listEvents_showDetails}" 
                    outcome="showEvent">
                    <f:param name="eventID" value="#{event.eventID}"/>
        </h:button>
        <h:commandButton id="deleteEvent" value="#{msgs.listEvents_delete}"
                    action="#{listEventsBean.deleteEvent(event.eventID)}" 
                    rendered="#{sessionBean.ld.systemAdmin}" 
                    onclick="return confirm('#{msgs.listEvents_deleteMsg}')"/>    
    </h:column>
</h:dataTable>
<h:outputText style="color:blue" value="#{msgs.listEvents_emptyResult}" rendered="#{listEventsBean.notEmpty}"/>
    <br />
<h:outputLink id="backToSearchLink" value="#{request.contextPath}/facelets/allUsers/searchEvents.xhtml" rendered="#{listEventsBean.notEmpty}">
    <h:outputText value="#{msgs.listEvents_searchAgain}"/>
</h:outputLink>

<ui:repeat id="paginationEvent" var="p" value="#{listEventsBean.getPageNumbers()}">
   <h:outputLink value="#{request.contextPath}/facelets/allUsers/listEvents.xhtml">
       <h:outputText value="#{p.toString()}" />
       <f:param name="page" value="#{p.toString()}" />
       <f:param name="sorting" value="#{listEventsBean.sortField}"/>
       <f:param name="eventListType" value="#{listEventsBean.eventListType}" />
   </h:outputLink>
</ui:repeat>

</h:form>
</ui:define>
</ui:composition>
</ui:composition>

{msgs.listEvents\u events}




该死!我刚找到我的虫子! 我仍然有一个绑定附加到我的dataTable(dataTable的开头)。 因为我的视图范围绑定导致错误。其中一个似乎是在dataTable中调用我的方法两次(Tanks向BalusC获取此信息)。删除此消息并通过将其呈现为h:outputText添加消息。 我仍然愿意听取任何建议,如如何在不丢失分页的情况下将范围更改为请求,或如何在不呈现h:outputText和绑定的情况下,以不同的方式将BackingBean中的消息添加到应用程序中