Seltsames problem mit rendered= " true/false Fragen in JSF
Ich bin eine sehr einfache, aber lästige Problem mit JSF. Ich habe eine Datentabelle (mit einfachen erste nächste usw paging-option) , die ich Auffüllen möchten von der gleichen Seite, wo Benutzer erste Auswahl.
Ursprünglichen Form
<b><h:selectOneRadio id="radio1" layout="pageDirection" style="font-weight: bold" value="#{displayNOC.slection}"> <f:selectItem itemLabel="Search By NOC" itemValue="N" id="selectItem1" />
<f:selectItem itemLabel="Search By Title" itemValue="T" id="selectItem2" />
</h:selectOneRadio></td>
<hx:commandExButton type="submit" image="images/btn_search.jpg" action="#{displayNOC.Process_request}" onclick="return validate_ListNoc(this.form)"></hx:commandExButton></b>
Sobald Benutzer wählen Sie eine Optionsschaltfläche aus und klicken Sie auf "suchen", ich bin das füllen einer datatable (das ist versteckt auf der gleichen Seite mit gerenderten Eigenschaften false) und eine paging-Taste (an dieser Stelle habe ich nur noch NÄCHSTE Taste, die auch versteckt auf die Zeit der laden der form mit gerendert-Eigenschaft) ohne jedes problem .
<B>Search Results :<BR><BR>
<h:inputHidden id="text1" value="#{displayNOC.firstRow}" ></h:inputHidden>
navigation Next button start
<hx:commandExButton type="submit" value="Next" action="#{displayNOC.goNext}" rendered="#{displayNOC.render_panel_status}" disabled="#{displayNOC.firstRow + displayNOC.rowPerPage >= displayNOC.totalSize}">
</hx:commandExButton>
<h:dataTable border="1" id="table" value="#{displayNOC.WAMNOC}" rendered="#{displayNOC.render_status}" var="SearchResult" headerClass="row2" rowClasses="row-even,row-odd" cellspacing="6">
<h:column>
<f:facet name="header">
<h:commandLink value="NOC_Number" style="text-align: center">
</h:commandLink>
</f:facet>
<h:outputText value="#{SearchResult[0]}" />
</h:column>
......................
.......................
</h:datatable>
Mein managed-bean-SCOPE:REQUEST in face-config.xml ist wie folgt (ich habe alle getter und setter für alle vars)
@SuppressWarnings("unchecked")
public void Process_request()
{
setRender_status(true);
setRender_panel_status(true);
WAMNOCSERVICE WNS=new WAMNOCSERVICE();
List<WAM_NOC> wnoc= WNS.getNOCandOccupation(0,10);
//get the total size of the records
setTotalSize(WNS.totalRecordAvaiable());
setTotalpage(wnoc.size()/10);
setRowPerPage(10);
setFirstRow(1);
setWAMNOC(wnoc);
}
//this action is for next button in the table paging
@SuppressWarnings("unchecked")
public void goNext()
{
setRender_status(true);
setRender_panel_status(true);
setRowPerPage(10);
System.out.println(firstRow);
firstRow = getFirstRow() + rowPerPage;
WAMNOCSERVICE WNS=new WAMNOCSERVICE();
List<WAM_NOC> wnoc= WNS.getNOCandOccupation(firstRow,rowPerPage);
setWAMNOC(wnoc);
}
Mein problem ist wenn ich auf GoNext () - Taste render_status nie auf true gesetzt, und ich nie sehen keine datatable oder ein button nicht mehr. Zuzugeben, ich bin neu in JSF , dies war das Letzte, was ich dachte, mir solche Schwierigkeiten. Jegliche Hilfe würde sehr geschätzt werden.
InformationsquelleAutor BBA | 2010-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Bedingung für die
rendered
attribtue wird neu bewertet, die in der nachfolgenden Anfrage. Aber da es je nach Anforderung scoped bean, die garbaged Ende der Reaktion neu erstellt und auf einem der nächsten neuen Anfrage, diese Bedingung wird nun wieder auf Standard und so wird die Aktion nicht aufgerufen werden, wenn Sie diese in einemUICommand
Komponente oder einer Ihrer Eltern.In JSF 1.x es gibt verschiedene Lösungen, um zu gehen:
Legte bean im session-scope. Einfachste, aber nicht gut für die user experience, wenn der Anwender öffnet die selbe Seite in mehreren tabs/Browsern auf der gleichen Sitzung.
Verwenden
<h:inputHidden>
mit einer Bindung. Böse, mehr Details finden Sie in diese Antwort.Den Einsatz von Tomahawk ist
<t:saveState>
behalten die Bohnen in der nächsten Anfrage. Sauber und nett, aber erfordert zusätzliche Komponenten-Bibliothek.Den JSF-2.0-Lösung wäre, einfach die bean im view-scope.
Oh, Sie ursprünglich tagged die Frage, wie JSF 2.0, also bin ich davon ausgegangen, es JSF 2.0. Leider, es wird hacky auf JSF 1.x... ich aktualisierte die Antwort.
Nochmals vielen Dank. Ich Schätze Ihre Hilfe
Du bist herzlich willkommen. Vergessen Sie nicht, markieren Sie die Antwort akzeptiert, wenn es half, das problem zu lösen. Siehe auch stackoverflow.com/faq
InformationsquelleAutor BalusC