[jboss-user] [JBoss Seam] - the method invoked twice, when render the page once!

chlol do-not-reply at jboss.com
Wed Oct 17 03:01:00 EDT 2007


in my page ,only one place to inove the method,but it excuted twice,when render the page once
i search the solution in jboss forum and google,but i cann't solve it.

the code piece:

  | <s:decorate template="layout/display.xhtml">
  | 	<ui:define name="label">#{messages['task.principal']}</ui:define>
  | 	<h:selectOneMenu id="userByPrincipalId" value="#{taskList.task.userByPrincipal.id}">
  | 		<f:selectItem itemValue="-1" itemLabel="#{messages['label.selectItem.message']}"/>
  | 		<f:selectItems value="#{userList.selectItem}"/> 
  | 	</h:selectOneMenu>
  | </s:decorate>
  | 

when the page render,the method getSelectItem in UserList invoked twice

my page 

  | <!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  |                              "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  | 
  | <ui:composition xmlns="http://www.w3.org/1999/xhtml"
  | 	xmlns:s="http://jboss.com/products/seam/taglib"
  | 	xmlns:ui="http://java.sun.com/jsf/facelets"
  | 	xmlns:f="http://java.sun.com/jsf/core"
  | 	xmlns:h="http://java.sun.com/jsf/html"
  |     xmlns:a="https://ajax4jsf.dev.java.net/ajax"
  | 	xmlns:rich="http://richfaces.ajax4jsf.org/rich"
  | 	template="layout/template.xhtml">
  | 
  | 	<ui:define name="body">
  | 
  | 		<h:messages globalOnly="true" styleClass="message" id="globalMessages" />
  | 
  | 		<h:form id="taskSearch" styleClass="edit">
  | 
  | 			<rich:simpleTogglePanel
  | 				label="#{messages['subproject']} / #{messages['task']} #{messages['label.searchCondition.title']}"
  | 				switchType="ajax">
  | 				<h:panelGrid columns="4" columnClass="gridContent" width="80%" algin="left">
  | 					<s:decorate template="layout/display.xhtml">
  | 						<ui:define name="label">#{messages['task.name']}</ui:define>
  | 						<h:inputText id="name" value="#{taskList.task.name}"/>
  | 					</s:decorate>
  | 					<s:decorate template="layout/display.xhtml">
  | 						<ui:define name="label">#{messages['task.belongProject']}</ui:define>
  | 						<h:selectOneMenu id="projectId" value="#{taskList.task.project.id}">
  | 							<f:selectItem itemValue="-1" itemLabel="#{messages['label.selectItem.message']}"/>
  | 							<f:selectItems value="#{projectList.selectItemByOrdinary}"/>
  | 						</h:selectOneMenu>
  | 					</s:decorate>
  | 
  | 
  | 				</h:panelGrid>
  | 								
  | 				<h:panelGrid columns="4" columnClass="gridContent" width="80%" algin="left">
  | 
  | 					<s:decorate template="layout/display.xhtml">
  | 						<ui:define name="label">#{messages['task.creator']}</ui:define>
  | 						<h:selectOneMenu id="userByCreatorId" value="#{taskList.task.userByCreator.id}">
  | 							<f:selectItem itemValue="-1" itemLabel="#{messages['label.selectItem.message']}"/>
  | 							<f:selectItems value="#{userList.selectItem}"/>
  | 						</h:selectOneMenu>
  | 					</s:decorate>
  | 
  | 					<s:decorate template="layout/display.xhtml">
  | 						<ui:define name="label">#{messages['task.principal']}</ui:define>
  | 						<h:selectOneMenu id="userByPrincipalId" value="#{taskList.task.userByPrincipal.id}">
  | 							<f:selectItem itemValue="-1" itemLabel="#{messages['label.selectItem.message']}"/>
  | 							<f:selectItems value="#{userList.selectItem}"/> 
  | 						</h:selectOneMenu>
  | 					</s:decorate>
  | 				</h:panelGrid>
  | 				
  | 				
  | 				<h:panelGrid columns="4" columnClass="gridContent" width="80%" algin="left">
  | 
  | 					<s:decorate template="layout/display.xhtml">
  | 						<ui:define name="label">#{messages['task.type']}</ui:define>
  | 						<h:selectOneMenu id="type" value="#{taskList.task.leafFlag}">
  | 							<f:selectItem itemValue="-1" itemLabel="#{messages['label.selectItem.message']}"/>
  | 							<f:selectItem itemValue="1" itemLabel="#{messages['subproject']}"/>
  | 							<f:selectItem itemValue="0" itemLabel="#{messages['task']}"/>
  | 						</h:selectOneMenu>
  | 					</s:decorate>
  | 
  | 					<s:decorate template="layout/display.xhtml">
  | 						<ui:define name="label">#{messages['task.state']}</ui:define>
  |                 		<h:selectOneMenu id="state" value="#{taskList.task.state}">
  |                     		<f:selectItem itemValue="-1" itemLabel="#{messages['label.selectItem.message']}"/>
  |                 			<f:selectItems value="#{constants.taskState}"/>
  |                 		</h:selectOneMenu>
  | 					</s:decorate>
  | 				</h:panelGrid>			
  | 
  | 			</rich:simpleTogglePanel>
  | 
  | 			<div class="actionButtons">
  | 			  <table>
  | 			  <tr>
  | 			  	<td align="left">
  | 				<h:commandButton action="/TaskList.xhtml?filter=default&proId=-2&parentId=-2" 
  | 									 id="search" value="#{messages['button.search']}"  />
  | 
  | 						<h:commandButton 
  | 								action="/TaskList.xhtml?filter=principalisme&proId=-2&parentId=-2" 
  | 									id="principalisme" 
  | 								 value="#{messages['task.principalisme']}" >
  | 							<s:conversationPropagation type="join"/>
  | 						</h:commandButton>
  | 								 
  | 						<h:commandButton 
  | 								action="/TaskList.xhtml?filter=creatorisme&proId=-2&parentId=-2" 
  | 									id="creatorisme" 
  | 								 value="#{messages['task.creatorisme']}"  />
  | 						<h:commandButton action="/TaskList.xhtml?filter=timeover&proId=-2&parentId=-2" 
  | 											 id="timeover"
  | 						 				  value="#{messages['task.timeover']}"/>
  | 				</td>
  | 						
  | 				<td align="right">				 
  | 				<s:button view="/TaskEdit.xhtml" id="createSubproject"
  | 						 value="#{messages['button.create']}#{messages['task.onelevelsubproject']}" rendered="#{projectList.isPrincipal()}">
  | 					<f:param name="tskId" value="0"/>
  | 					<f:param name="taskId" />
  | 					<f:param name="tType" value="1" />
  | 					<s:conversationPropagation propagation="begin" />
  | 				</s:button>
  | 				
  | 				<s:button view="/TaskEdit.xhtml" id="createTask"
  | 						 value="#{messages['button.create']}#{messages['task.oneleveltask']}" rendered="#{projectList.isPrincipal()}">
  | 					<f:param name="tskId" value="0"/>
  | 					<f:param name="taskId" />
  | 					<f:param name="tType" value="0" />
  | 					<s:conversationPropagation propagation="begin" />
  | 				</s:button>
  | 				</td>
  | 			</tr>
  | 			</table>
  | 
  | 
  | 			</div>
  | 
  | 
  | 
  | 		
  | 		
  | 		<rich:panel style="padding:0" headerClass="outpanelHeader">
  | 
  | 			<h:panelGrid columns="2" columnClasses="gridContent">
  | 				<rich:panel bodyClass="inpanelBody">
  | 					<f:facet name="header">
  | 						#{messages['label.tree']}
  | 					</f:facet>
  | 				 
  | 					<div class="sample-container">
  | 					<rich:tree style="overflow:auto;width:288px;height:300px;" value="#{treeHome.data}" var="item" switchType="client" nodeFace="#{item.type}">
  | 						<rich:treeNode type="library">
  | 							<h:outputText value="#{item.type}" />
  | 						</rich:treeNode>
  | 						<rich:treeNode type="project">
  | 
  | 							<h:outputText value="#{item.name}" />
  | 							<a:support event="onselected" reRender="resultTable">  
  | 								<a:actionparam name="parentId" value="-1" assignTo="#{taskList.parentId}"/> 
  | 								<a:actionparam name="proId" value="#{item.id}" assignTo="#{taskList.projectId}"/>
  | 								<a:actionparam name="order" value="beginDate asc" assignTo="#{taskList.order}"/>
  | 							</a:support>
  | 
  | 						</rich:treeNode>
  | 						<rich:treeNode type="subproject">
  | 							<h:outputText value="#{item.name}" />
  | 							<a:support event="onselected" reRender="resultTable">  
  | 							    <a:actionparam name="proId" value="-1" assignTo="#{taskList.projectId}"/> 
  | 								<a:actionparam name="parentId" value="#{item.id}" assignTo="#{taskList.parentId}"/>
  | 								<a:actionparam name="order" value="beginDate asc" assignTo="#{taskList.order}"/>
  | 							</a:support>
  | 						</rich:treeNode>
  | 						<rich:treeNode type="task">
  | 							<h:outputText value="#{item.name}" />
  | 							<a:support event="onselected" reRender="resultTable">   
  | 							    <a:actionparam name="proId" value="-1" assignTo="#{taskList.projectId}"/> 
  | 								<a:actionparam name="parentId" value="#{item.id}" assignTo="#{taskList.parentId}"/>
  | 								<a:actionparam name="order" value="beginDate asc" assignTo="#{taskList.order}"/>
  | 							</a:support>
  | 						</rich:treeNode>
  | 					</rich:tree></div>
  | 				</rich:panel>
  | 
  | 				<a:outputPanel id="resultTable">
  | 				<rich:panel bodyClass="inpanelBody" style="overflow:auto;width:600px;height:385px;">
  | 					<f:facet name="header">#{messages['subproject']} / #{messages['task']} #{messages['label.searchResult.title']}</f:facet>
  | 					<div class="results" id="taskList"><h:outputText
  | 						value="#{messages['label.searchResult.null']}"
  | 						rendered="#{empty taskList.resultList}" /> 
  | 						
  | 
  | <!--						<h:outputText value="#{taskList.parentId}" id="test"/>-->
  | 						
  | 
  | 
  | 						
  | 					
  | 					<rich:datascroller for="taskList" rendered="#{taskList.resultList.size > 10}"/>
  | 				
  | 						<rich:dataTable
  | 						id="taskList" var="task" value="#{taskList.resultList}"
  | 						rendered="#{not empty taskList.resultList}"
  | 						rowClasses="row1,row2"
  | 						rows="10">
  | 						<h:column>
  | 							<f:facet name="header">
  | 								<s:link styleClass="columnHeader"
  | 									value="#{messages['task.name']} #{taskList.order=='name asc' ? messages.down : ( taskList.order=='name desc' ? messages.up : '' )}">
  | 									<f:param name="order"
  | 										value="#{taskList.order=='name asc' ? 'name desc' : 'name asc'}" />
  | 								</s:link>
  | 							</f:facet>
  | 
  | 
  | 
  | <!--							<div onclick="event.cancelBubble = true;" class="popup" id="#{task.id}"  style="z-index:1000">-->
  | 								<rich:toolTip followMouse="true" direction="top-right" delay="500" mode="client">
  | 								<table>
  | 				  					<tr>
  | 									    <td style="white-space:nowrap">#{messages['task.code']}:</td>
  | 									    <td style="white-space:nowrap">#{task.code}</td>
  | 									</tr>				 	  					
  | 				  					<tr>
  | 									    <td style="white-space:nowrap">#{messages['task.type']}:</td>
  | 									    <td style="white-space:nowrap">#{task.wrappedType}</td>
  | 									</tr>	
  | 				  					<tr>
  | 									    <td style="white-space:nowrap">#{messages['task.spendHour']}:</td>
  | 									    <td style="white-space:nowrap">#{task.spendHour}</td>
  | 									</tr>		
  | 				  					<tr>
  | 									    <td style="white-space:nowrap">#{messages['task.createDate']}:</td>
  | 									    <td style="white-space:nowrap">
  |             								<h:outputText value="#{task.createDate}">
  |             									<s:convertDateTime type="both" dateStyle="long" pattern="yyyy-MM-dd"/>
  |             								</h:outputText>
  | 									    </td>
  | 									</tr>
  | 				  					<tr>
  | 									    <td style="white-space:nowrap">#{messages['task.description']}:</td>
  | 									    <td style="white-space:nowrap">
  | 									    <h:outputText escape="false" value="#{task.wrappedDescription}"/>
  | 									    </td>
  | 									</tr>
  | 			 	  					<tr>
  | 			 	  						<td colspan="2" align="left">
  | 			 	  							<rich:separator height="1" style="padding:10px 0" />
  | 			 	  						</td>
  | 			 	  					</tr>
  | 									
  | 				  					<tr>
  | 									    <td style="white-space:nowrap">#{messages['task.belongProject']}:</td>
  | 									    <td style="white-space:nowrap">#{task.project.name}</td>
  | 									</tr>					
  | 									<tr>
  | 									    <td style="white-space:nowrap">#{messages['project.creator']}:</td>
  | 									    <td style="white-space:nowrap">
  | 					            			<h:outputText value="#{task.project.userByCreator.name}"/>
  | 									    </td>
  | 									</tr>	
  | 									<tr>
  | 									    <td style="white-space:nowrap">#{messages['project.principal']}:</td>
  | 									    <td style="white-space:nowrap">
  | 											<h:outputText value="#{task.project.userByPrincipal.name}"/>	
  | 									    </td>
  | 									</tr>
  | 
  | 				  				</table>
  | 								</rich:toolTip>
  | 
  | 
  | 
  | 							<s:link view="/TaskEdit.xhtml"
  | 								   value="#{task.name}" id="task">
  | 								<f:param name="taskId" value="#{task.id}" />
  | 								<f:param name="projectId" value="#{task.project.id}" />
  | 								<f:param name="proId" value="#{task.project.id}" />
  | 								<f:param name="parentId" value="#{task.parentId}" />
  | 								<f:param name="tskId" value="#{task.parentId}" />
  | 								<f:param name="tType" value="#{task.leafFlag}" />
  | 							</s:link>
  | 							
  | 							<h:outputText value="#{messages['notLeaf']}" rendered="#{task.leafFlag == 1}"/>
  | 
  | 						</h:column>
  | 
  | 						<h:column>
  | 							<f:facet name="header">
  | 								<s:link styleClass="columnHeader"
  | 									value="#{messages['task.principal']} #{taskList.order=='principal asc' ? messages.down : ( taskList.order=='principal desc' ? messages.up : '' )}">
  | 									<f:param name="order"
  | 										value="#{taskList.order=='principal asc' ? 'principal desc' : 'principal asc'}" />
  | 								</s:link>
  | 							</f:facet>
  |             #{task.userByPrincipal.name}
  |         </h:column>
  | 						<h:column>
  | 							<f:facet name="header">
  | 								<s:link styleClass="columnHeader"
  | 									value="#{messages['task.creator']} #{taskList.order=='creator asc' ? messages.down : ( taskList.order=='creator desc' ? messages.up : '' )}">
  | 									<f:param name="order"
  | 										value="#{taskList.order=='creator asc' ? 'creator desc' : 'creator asc'}" />
  | 								</s:link>
  | 							</f:facet>
  |             #{task.userByCreator.name}
  |         </h:column>
  | 						<h:column>
  | 							<f:facet name="header">
  | 								<s:link styleClass="columnHeader"
  | 									value="#{messages['task.beginDate']} #{taskList.order=='beginDate asc' ? messages.down : ( taskList.order=='beginDate desc' ? messages.up : '' )}">
  | 									<f:param name="order"
  | 										value="#{taskList.order=='beginDate asc' ? 'beginDate desc' : 'beginDate asc'}" />
  | 								</s:link>
  | 							</f:facet>
  | 							<h:outputText value="#{task.beginDate}">
  | 								<s:convertDateTime type="both" dateStyle="long"
  | 									pattern="yyyy-MM-dd" />
  | 							</h:outputText>
  | 
  | 						</h:column>
  | 						<h:column>
  | 							<f:facet name="header">
  | 								<s:link styleClass="columnHeader"
  | 									value="#{messages['task.endDate']} #{taskList.order=='endDate asc' ? messages.down : ( taskList.order=='endDate desc' ? messages.up : '' )}">
  | 									<f:param name="order"
  | 										value="#{taskList.order=='endDate asc' ? 'endDate desc' : 'endDate asc'}" />
  | 								</s:link>
  | 							</f:facet>
  | 							<h:outputText value="#{task.endDate}">
  | 								<s:convertDateTime type="both" dateStyle="long"
  | 									pattern="yyyy-MM-dd" />
  | 							</h:outputText>
  | 
  | 						</h:column>
  | 						<h:column>
  | 							<f:facet name="header">
  | 								<s:link styleClass="columnHeader"
  | 									value="#{messages['task.state']} #{taskList.order=='state asc' ? messages.down : ( taskList.order=='state desc' ? messages.up : '' )}">
  | 									<f:param name="order"
  | 										value="#{taskList.order=='state asc' ? 'state desc' : 'state asc'}" />
  | 								</s:link>
  | 							</f:facet>
  |             #{task.wrappedState}
  |         </h:column>
  | 
  | 						<h:column>
  | 							<f:facet name="header">#{messages['label.header.operation']}</f:facet>
  | 							
  | 								<div onclick="event.cancelBubble = true;" class="popup" id="#{task.id}#{task.code}"  style="z-index:1000">
  | 									<table>
  | 			 	 	 					<tr>
  | 			 	  							<td colspan="2" align="right"><a onclick="hideCurrentPopup();return false;"><img src="img/close.png"/></a></td>
  | 			 	  						</tr>
  | 			 	  						<tr>
  | 			 	  							<td colspan="2" style="white-space:nowrap">[#{task.name}]</td>
  | 			 	  						</tr>
  | 			 	  						<tr>
  | 			 	  							<td colspan="2" style="white-space:nowrap">#{messages['task.operation.selectOperation']}</td>
  | 			 	  						</tr>
  | 			 	  						<tr>
  | 			 	  							<td style="white-space:nowrap">
  | 			 	  							<!-- create subproject -->
  |             								<s:link view="/TaskEdit.xhtml" 
  |                    			   					   value="#{messages['right']}#{messages['task.operation.createSubproject']}"
  |                 								rendered="#{authenticator.user.id == task.userByPrincipal.id and task.leafFlag == 1 and task.state == 0}">
  |                 								<f:param name="proId" value="#{task.project.id}"/>
  |                 								<f:param name="tskId" value="#{task.id}"/>
  | 												<f:param name="taskId" />
  | 												<f:param name="tType" value="1" />
  | 												<s:conversationPropagation propagation="begin" />
  |             								</s:link>
  |             								</td>
  |             								<td style="white-space:nowrap">
  |             								<!-- create task --> 
  |             								<s:link view="/TaskEdit.xhtml" 
  |                    			   					   value="#{messages['right']}#{messages['task.operation.createTask']}"
  |                 								rendered="#{authenticator.user.id == task.userByPrincipal.id and task.leafFlag == 1 and task.state == 0}">
  |                 								<f:param name="proId" value="#{task.project.id}"/>
  |                 								<f:param name="tskId" value="#{task.id}"/>
  |  												<f:param name="taskId" />
  | 												<f:param name="tType" value="0" />
  | 												<s:conversationPropagation propagation="begin" />
  |             								</s:link>
  | 			 	  							</td>
  | 			 	  						</tr>
  |   									</table>
  | 								</div> 
  | 							<s:link onmouseover="showPopup('#{task.id}#{task.code}', event, 'left');"
  | 								   		  value="#{messages['button.create']}#{messages['haveChildren']}"
  | 									   rendered="#{authenticator.user.id == task.userByPrincipal.id and task.leafFlag == 1 and task.state == 0}">
  | 								<f:param name="taskId" value="#{task.id}" />
  | 							</s:link>
  | 
  | 							<span>      </span>
  | 
  | 
  | 							
  | 							<div onclick="event.cancelBubble = true;" class="popup" id="#{task.code}#{task.id}"  style="z-index:1000">
  | 								<table>
  | 			 	  				  <tr>
  | 			 	  					<td colspan="2" align="right"><a onclick="hideCurrentPopup();return false;"><img src="img/close.png"/></a></td>
  | 			 	  				  </tr>
  | 			 	  				  <tr>
  | 							 	  	<td colspan="2" style="white-space:nowrap">[#{task.name}]</td>
  | 							 	  </tr>
  | 			 	  				  <tr>
  | 							 	  	<td colspan="2" style="white-space:nowrap">
  | 							 	  		<h:outputText value="#{messages['task.warning.content']}" escape="false"/>
  | 							 	  	</td>
  | 							 	  </tr>
  | 							 	  <tr>
  | 							 	  	<td>
  | 							 	  		<!-- close the task -->
  | 										<s:link view="/TaskList.xhtml"
  | 											   value="#{messages['right']}#{messages['task.close']}"
  | 											  action="#{taskHome.update}"
  | 												  id="closetask"
  | 										    rendered="#{authenticator.user.id == task.userByCreator.id and task.state == 0}">
  | 											<f:param name="id" value="#{task.id}" />
  | 											<f:param name="tState" value="1"/>
  | 										</s:link>
  | 				            		</td>
  | 				            		<td>
  | 				            			<!-- cancel the task --> 
  | 										<s:link view="/TaskList.xhtml"
  | 											  action="#{taskHome.update}"
  | 											   value="#{messages['right']}#{messages['task.cancel']}"
  | 												  id="canceltask"
  | 											rendered="#{authenticator.user.id == task.userByCreator.id and task.state == 0}">
  | 											<f:param name="id" value="#{task.id}" />
  | 											<f:param name="tState" value="2"/>
  | 										</s:link>
  | 							 	  	</td>
  | 							 	  </tr>
  | 				  				</table>
  | 							</div> 
  | 			
  | 							<s:link onmouseover="showPopup('#{task.code}#{task.id}', event, 'left');"
  | 								   		  value="#{messages['task.changeStateOperation']}#{messages['haveChildren']}"
  | 									   rendered="#{authenticator.user.id == task.userByCreator.id and task.state == 0}">
  | 							</s:link>						
  | 							
  | 
  | 							<span>      </span>
  | 							<s:link view="/TaskDelayEdit.xhtml"
  | 								   value="#{messages['task.operation.delay']}"
  | 							    rendered="#{authenticator.user.id == task.userByPrincipal.id and task.project.type == 1 and task.state != 1 and task.state != 2}">
  | 								<f:param name="taskId" value="#{task.id}" />
  | 								<f:param name="tId" value="#{task.id}" />
  |                 				<f:param name="taskDelayId"/>
  |                 				<f:param name="order" value="createDate desc"/>
  |                 				<f:param name="tType" value="#{task.leafFlag}"/>
  |                 				<s:conversationPropagation propagation="begin"/>
  | 							</s:link>
  | 
  | 						</h:column>
  | 					</rich:dataTable>
  | 					</div>
  | 				</rich:panel>
  | 				</a:outputPanel>
  | 				
  | 			</h:panelGrid>
  | 		</rich:panel>
  | 		
  | </h:form>
  | 
  | 	</ui:define>
  | 
  | </ui:composition>
  | 

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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4095892




More information about the jboss-user mailing list