Sure. Here we go:

The session bean:
@Stateful
  | @Scope(ScopeType.SESSION)
  | @LoggedIn
  | @Name("searchTestaction")
  | public class SearchTestactionAction implements Serializable, 
SearchTestaction {
  |     @PersistenceContext(unitName = "aresDatabase")
  |     private transient EntityManager em;
  |     
  |     @In(required=false)
  |     private Testaction testaction;
  |     
  |     private List<Testaction> foundTestactions;
  |     @DataModelSelection
  |     @Out(required=false, scope=ScopeType.SESSION)
  |     private Testaction foundTestaction;
  |     //@DataModelSelectionIndex workaround
  |     private int foundTestactionIndex;
  |     
  |     @In(required=false)
  |     private Release selectedRelease;
  |     
  |     private String sortColumn = "id";
  |     private boolean ascending = true;
  |     
  |     @Factory("foundTestactions")
  |     public String search() {
  |             //omitted: generate the query
  |             
  |             if(query.length() != 0) {
  |                     if(selectedRelease != null) {
  |                             addPrefix(query);
  |                             query.append("TACT_REL_ID=");
  |                             query.append(selectedRelease.getID());
  |                     }
  |                     foundTestactions = EMHelper.execQuery(em, "from 
Testaction " + query.toString() + " order by TACT_ID asc");
  |                     Collections.sort(foundTestactions, new 
TestactionComparator(sortColumn, ascending));
  |             }
  |             
  |             return "search";
  |     }
  |     
  |     @DataModel
  |     public List<Testaction> getFoundTestactions() {
  |             return foundTestactions;
  |     }

The page with a search form and a result list:
<ui:define name="content">
  |     <h1>#{ares_messages.header_searchTestaction}</h1>
  |     <h:form>
  |             <div id="errors"><h:messages layout="table" /></div>
  |             <div class="buttonLine">
  |                     <h:outputText rendered="#{not empty 
searchTestaction.foundTestactions}"
  |          value="#{ares_messages.label_search_displaySearchForm}"
  |          onclick="switchVisibility('searchForm'); 
this.style.display='none';" styleClass="button"
  |          style="margin-right: 30px; padding: 5px; cursor: pointer;" />
  |                     <h:commandButton action="#{searchTestaction.search}" 
image="img/find.gif" styleClass="graphical"
  |          style="margin-left: 0px; margin-right: 15px;" 
title="#{ares_messages.tooltip_searchTestaction}" />
  |             </div>
  |             
  |             <div id="release">
  |                     <h:outputText value="#{ares_messages.filter_release}: " 
/>
  |                     <h:selectOneMenu 
value="#{releaseSelector.selectedReleaseNumber}">
  |                             <f:selectItems 
value="#{releaseSelector.releaseItems}" />
  |                     </h:selectOneMenu>
  |             </div>
  |             
  |             <div id="searchForm" style="display: #{empty 
searchTestaction.foundTestactions ? 'block' : 'none'};">
  | 
  | ....
  | 
  | 
  | <t:dataTable var="testaction_var"
  |                                      value="#{foundTestactions}"
  |                                      id="foundTestactionsTable"
  |                                      renderedIfEmpty="false"
  |                                      
sortColumn="#{searchTestaction.sortColumn}"
  |                                      
sortAscending="#{searchTestaction.ascending}"
  |                                      preserveSort="true"
  |                                      rows="20">
  |                     <f:facet name="header">
  |                             <h:outputText 
value="#{ares_messages.label_ResultCount}: #{foundTestactions.rowCount}" />
  |                     </f:facet>

This ocde adresses the first problem I mentioned. The second problem occurs 
here:

Bean:
@Stateful
  | @Scope(ScopeType.SESSION)
  | @LoggedIn
  | @Name("testactionValidator")
  | public class TestactionValidatorAction extends TestactionHandling 
implements Serializable,  TestactionValidator {
  |     @In(required=false)
  |     private Release selectedRelease;
  |     
  |     @In(required=false)
  |     private User selectedUser;
  |     
  |     private Long lastSelectedReleaseID;
  |     private String lastSelectedUserID;
  |     
  |     @Factory("testactionsForValidator")
  |     public void initTestactions() {
  |             if(hasAFilterChanged() || shouldRefresh() || testactions == 
null) {
  |                     StringBuffer filter = new StringBuffer();
  |                     if(selectedRelease != null) {
  |                             filter.append(" and TACT_REL_ID=");
  |                             filter.append(selectedRelease.getID());
  |                     }
  |                     testactions = EMHelper.execQuery(em.createQuery(
  |                                     "from Testaction where 
TACT_VALIDATOR_USR_ID=:validator and " +
  |                                     "TACT_BFV_ID=" + 
BugfixValidation.Constants.TO_VALIDATE.value() + " and " +
  |                                     "TACT_REV_ID!=" + 
Revisionclass.Constants.TO_BUGFIX.value() +
  |                                     filter.toString() +
  |                                     " order by TACT_ID asc"
  |                     ).setParameter("validator", 
user.getIsAdmin().equals(new Integer(-1)) ? selectedUser.getID() : 
user.getID()));
  | 
  |                     lastSelectedReleaseID = (selectedRelease == null) ? 
null : selectedRelease.getID();
  |                     lastSelectedUserID = (selectedUser == null) ? null : 
selectedUser.getID();
  |             }
  |             Collections.sort(testactions, new TestactionComparator(column, 
ascending));
  |     }
  | 
  |     @DataModel(scope=ScopeType.PAGE)
  |     public List<Testaction> getTestactionsForValidator() {
  |             initTestactions();
  |             return testactions;
  |     }

And the page:
<t:dataTable var="testaction_var" value="#{testactionsForValidator}"
  |    renderedIfEmpty="false" sortColumn="#{testactionValidator.column}"
  |    sortAscending="#{testactionValidator.ascending}" preserveSort="true">
  |                     <f:facet name="header">
  |                             <h:outputText 
value="#{ares_messages.label_ResultCount}: #{testactionsForValidator.rowCount}" 
/>
  |                     </f:facet>
  |                     <h:column>
  |                             <f:facet name="header">
  |                                     <t:commandSortHeader columnName="id">
  |                                             <h:outputText 
value="#{ares_messages.label_testaction_ID}" />
  |                                     </t:commandSortHeader>
  |                             </f:facet>
  |                             <h:commandLink value="#{testaction_var.ID}"
  |            action="#{testactionValidator.select}" 
styleClass="rightAlignment" />
  |                     </h:column>     

The members "column" and "ascending" are defined in the superclass (with 
getters and setters). Perhaps that's is the problem?

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3989607#3989607

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3989607
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to