[jboss-user] [JBoss Seam] - Refresh entities

hispeedsurfer do-not-reply at jboss.com
Fri Jan 12 08:08:56 EST 2007


How can I refresh entities in the following case.

I have a page that contains:
<div class="entry">
  | 				<a4j:log hotkey="M" />
  | 				<a4j:commandButton value="Reload" reRender="Sensor"/>
  | 				<div class="label">Sensor:</div>
  | 				<div class="input">
  | 					<a4j:region renderRegionOnly="false">
  | 						<h:selectOneMenu id="Sensor" value="#{messkette.sensor}"
  | 							converter="#{selectItemHelfer}" required="true" disabled="#{gesperrt}">
  | 							<f:selectItems value="#{messketteEditor.alleSensorenMitBlank}" />
  | 							<a4j:support event="onchange" reRender="Funktion, Sensormessbereich, Einheit, Sensorwarnung" />
  | 						</h:selectOneMenu>
  | 					</a4j:region>
  | 					<h:message for="Sensor" styleClass="message" />
  | 					<div><h:outputText id="Sensorwarnung" value="#{messketteEditor.sensorWarnung}" styleClass="kursiv" /></div>
  | 				</div>		
  | 			</div

Sometimes I need to edit or create a entry from database in a second instance of web browser. So the list in messketteEditor has changed. But when I perform the Reload commandButton the outcome is the same with no changes. 
What I have to do tell the Entitymanger to refresh the list from database.

Here the function that will be executet when a entity is changed or created
public String speichern() {
  | 		
  | 		checkKorrekterAufruf();
  | 		
  | 		if (!vorSpeichern()) {
  | 			ejbCtx.setRollbackOnly();
  | 			return null;
  | 		}
  | 		
  | 		try {
  | 			
  | 			String message = "";
  | 			
  | 			T entity = getEntity();
  | 	
  | 			if (neu) {
  | 				//Neues Entity, anlegen
  | 				em.persist(entity);
  | 				message = angelegtMessage();
  | 				loggeAenderung(getEntity(), "angelegt");
  | 			} else {
  | 				//Bestehendes Entity, Änderungen übernehmen
  | 				setEntity(em.merge(entity));
  | 				message = bearbeitetMessage();
  | 				loggeAenderung(getEntity(), "bearbeitet");
  | 			}
  | 			
  | 			nachSpeichern();System.out.println(entity);
  | 			
  | 			em.flush();
  | 						
  | 			addMessage(message);
  | 						
  | 		} catch (Exception ex) {			
  | 			ejbCtx.setRollbackOnly();
  | 			addWarning(speichernError() + " " + exceptionListe(ex));
  | 			System.out.println(ex.getMessage());
  | 			ex.printStackTrace();
  | 			
  | 			return null;
  | 		}
  | 		
  | 		return zurueckOutcome; 
  | 	}

and this is the code to return the list
private List<StandardEntity> listeHolen(Class<? extends StandardEntity> klasse, String where, String order) {
  | 
  | 		String klassenName = klasse.getName();
  | 		
  | 		String query = "from " + klassenName;
  | 		if (where != null)
  | 			query += " where " + where;
  | 		if (order != null)
  | 			query += " order by " + order;
  | 
  | 		List<StandardEntity> liste;
  | 		
  | 		try {
  | 			liste = (List<StandardEntity>) em.createQuery(query).getResultList();
  | 		} catch (Exception ex) {
  | 			//Im Fehlerfall (z.B. nichts gefunden) leere Liste erzeugen
  | 			ex.printStackTrace();
  | 			liste = new Vector<StandardEntity>();
  | 		}
  | 		
  | 		return liste;
  | 	}

Is there a solution for this case?


Thanks
andi

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

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




More information about the jboss-user mailing list