Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus

SubSonniC

Mitglied
Hallo,

mein commandButton in Zeile 51 verarbeitet zwar update="..." aber führt nicht den actionListener aus. Ich weiß aber nicht warum. Vielleicht kann mir jemand auf die Sprünge helfen.

[XML]
<p:dialog header="Laborergebnisse" widgetVar="laborResultDialog"
resizable="false" id="laborResultDlg">
<h:form id="postParams"
style="display: #{((orderPM.currentUser.isAdmin() or orderPM.currentUser.company.DType.equals('Clinic')) and (orderPM.selectedOrder.patient.gender == 'FEMALE')) ? '' : 'none'};">

<p:panelGrid id="params" cellpadding="4"
style="margin-left:5px; margin-bottom: 5px;">
<p:row>


<p:column>
<h:eek:utputText value="Lebensphase:" />
</p:column>
<p:column style="padding-top:15px;">
<p:selectOneMenu
value="#{orderPM.selectedOrder.patient.lifePhase}"
converter="ObjectConverter"
onchange="onChangeLifePhase(jQuery(this).val(), 'postParams')">
<f:selectItem itemLabel="-- Lebensphase auswählen" itemValue="" />
<f:selectItems value="#{orderPM.lifePhases}" var="phase"
itemLabel="#{phase.text}" itemValue="#{phase}" />
</p:selectOneMenu>
</p:column>

<p:column id="postParamsPragnantWeekHeader"
style="display:#{orderPM.selectedOrder.patient.lifePhase=='PRAGNANT' ? '' : 'none'};">
<h:eek:utputText value="Schwangerschaftswoche:" />
</p:column>
<p:column id="postParamsPragnantWeekValue"
style="padding-top:5px; display:#{orderPM.selectedOrder.patient.lifePhase=='PRAGNANT' ? '' : 'none'};">
<h:inputText
value="#{orderPM.selectedOrder.patient.pragnantWeek}" />
</p:column>

<p:column id="postParamsOvarialcyclePhaseHeader"
style="display:#{orderPM.selectedOrder.patient.lifePhase!='PRAGNANT' ? '' : 'none'};">
<h:eek:utputText value="Menstruationszyklus:" />
</p:column>
<p:column id="postParamsOvarialcyclePhaseValue"
style="padding-top:15px; display:#{orderPM.selectedOrder.patient.lifePhase!='PRAGNANT' ? '' : 'none'};">
<p:selectOneMenu
value="#{orderPM.selectedOrder.patient.ovarialcyclePhase}"
converter="ObjectConverter">
<f:selectItem itemLabel="-- Menstruationszyklus wählen"
itemValue="" />
<f:selectItems value="#{orderPM.ovarialcyclePhases}" var="phase"
itemLabel="#{phase.text}" itemValue="#{phase}" />
</p:selectOneMenu>
</p:column>
<p:column>
<p:commandButton value="Parameter speichern"
actionListener="#{orderPM.postsetOrderParams()}"
title="Parameter speichern" update=":laborResultForm:laborResultList"/>
</p:column>
</p:row>
</p:panelGrid>
</h:form>


<h:form id="laborResultForm">
<p:dataTable id="laborResultList" var="laborResult"
value="#{orderPM.selectedOrder.laborResults}"
widgetVar="laborResultTable">

<p:column headerText="Laborparameter">
<h:eek:utputText value="#{laborResult.laborParam.shortname}" />
</p:column>

<p:column headerText="Untersuchungsergebniss">
<h:eek:utputText
value="#{laborResult.result} #{laborResult.laborParam.defaultValueUnit}" />
</p:column>

<p:column headerText="Referenzwert">
<h:eek:utputText
value="#{orderPM.getRefValueForResult(laborResult).valueUp} - #{orderPM.getRefValueForResult(laborResult).valueTo} #{laborResult.laborParam.defaultValueUnit}" />
</p:column>

<p:column headerText="Beschreibung">
<h:eek:utputText
value="#{orderPM.getRefValueForResult(laborResult).description} " />
</p:column>

<p:column headerText="Referenzwert">
<p:commandButton value="Grafische Analyse" icon="ui-icon-star"
update=":graphicalAnalyseDlg"
oncomplete="graphicalAnalyseDialog.show()"
actionListener="#{orderPM.createLaborResultChart(laborResult)}"
title="Grafische Analyse der Laborergebnisse anzeigen">
</p:commandButton>
</p:column>



<f:facet name="footer">
<p:commandButton value="Exportieren nach LDT" icon="ui-icon-star" />
</f:facet>

</p:dataTable>
</h:form>
</p:dialog>
[/XML]
 
Zuletzt bearbeitet:

redJava99

Bekanntes Mitglied
Am xhtml ist nichts auszusetzen.
- Ist der Dialog selbst noch in ein h:form eingebettet?
- Wie sieht dein OrderPM aus?

Was mir sonst noch auffällt - ist vielleicht nützlich:
In den selectOneMenus kannst du für die f:selectItems das Attribut noSelectOption verwenden. Dann brauchst du den value nicht künstlich leer setzen und im Backend aufwendig validieren. In Kombination mit dem required-Attribut des selectOneMenus wird dann schon im Frontend validiert, bevor die Bean überhaupt was gesendet bekommt ;-)
Sieht dann etwa so aus:
[XML]<p:selectOneMenu required="true" ...>
<f:selectItem itemLabel="- auswählen -" noSelectOption="true" />
<f:selectItems ... />
</p:selectOneMenu>
[/XML]
 

SubSonniC

Mitglied
Hi,

erstmal vielen Dank für die Infos.

Nein der Dialog ist selbst nur in

[XML]
<ui:composition template="/WEB-INF/templates/layout_with_menu.xhtml">
<ui:define name="content">
.....
</ui:define>
</ui:composition>
[/XML]

eingeschlossen.

Hier nochmals auszüglich die orderPM.


Java:
@Named("orderPM")
@ViewScoped
public class OrderPM implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@EJB
	private OrderService orderService;
	@EJB
	private UserService userService;
	@EJB
	private ClinicService clinicService;
	@EJB
	private LaborService laborService;
	@EJB
	private LaborResultService laborResultService;
	@EJB
	private LaborProfileService laborProfileService;
	@EJB
	private LaborParamService laborParamService;
	@EJB
	private SecurityService securityService;
	@EJB
	private PdfService pdfService;

	@Inject
	private transient Logger logger;
	@Inject
	private ApplicationPM applicationPM;

	// Selected Orders that will be removed
	private Order[] selectedOrders = {};
	// Lazy loading Order list
	private LazyOrderDataModel lazyModel;
	// Creating new Order
	private Order newOrder = new Order();
	// Selected Order that will be updated
	private Order selectedOrder;
	// Available Order list
	private List<Order> orderList;

	// Available Labor list
	private List<Labor> laborList;
	private List<Clinic> clinicList;

	// Available Labor list
	private List<LaborProfile> laborProfileList;

	// All available LaborParams for select
	private List<LaborParam> laborParamList;

	// Selected LaborParams to filter table by Order.laborParams
	// private List<LaborParam> selectedLaborParamList;

	private Permission resourcePermission;

	private PMUser currentUser;
	private Order currentOrder;

	private Gender[] genders;
	private OvarialcyclePhase[] ovarialcyclePhases;
	private LifePhase[] lifePhases;
	
	private LaborResultChart laborResultChart;
	
	private PMUser selectedUser;
	private List<PMUser> userList;
	
	// Die für eine Untersuchung notwendige Anzahl an Standards je untersuchtem Laborparameter.
	// Wird bei der Fertigstellung der Untersuchung ausgewertet und auf die Aufträge bzw. ihre 
	// Laborergebnisse (LaborResult) anteilig verteilt.
//	private HashMap<LaborParam,String> analysedLaborParamStandards = new HashMap<LaborParam,String>();
//	private Examination examination=new Examination();
	private HashMap<LaborParam,Integer> analysingLaborParamsAndStandards = new HashMap<LaborParam,Integer>();


	// private List<LaborParam> analysingLaborParams=new
	// ArrayList<LaborParam>();

	@PostConstruct
	private void init() {
		logger.debug("Initialize OrderPM"); // logger
		currentUser = applicationPM.getCurrentUser(); // currentUser
		lazyModel = new LazyOrderDataModel(orderService, currentUser); // Initialisieren des LazyDataModels mit Filteroptionen bezüglich des angemeldeten Benutzers
		resourcePermission = securityService.getResourcePermission(Resource.ORDER); // Zugriffsrechte für Resource ORDER
		
		this.laborProfileList = laborProfileService.findWithNamedQuery(LaborProfile.FIND_ALL); // Laborprofilliste
		this.laborParamList = laborParamService.findWithNamedQuery(LaborParam.FIND_ALL); // Laborparameterliste
		this.genders = Gender.values(); // Geschlechter
		this.ovarialcyclePhases = OvarialcyclePhase.values(); // Menstruationszyklen
		this.lifePhases = LifePhase.values();
		
		if(currentUser.isAdmin()){
			try{
				this.orderList = orderService.findWithNamedQuery(Order.FIND_ALL); // Alle Aufträge
				this.laborList = laborService.findWithNamedQuery(Labor.FIND_ALL); // Alle Labore
				this.clinicList = clinicService.findWithNamedQuery(Clinic.FIND_ALL); // Alle Kliniken
			}catch(Exception e){
				logger.error(e.getCause().getMessage());
			}
			
			// Für Filteroption nach Benutzer und dessen LaborParameter
			this.selectedUser=currentUser;
			try{
				// Liste der Auswählbaren Benutzer für Admins
				this.userList= userService.findWithNamedQuery(PMUser.FIND_ALL);
			} catch(Exception e){
				logger.error(e.getCause().getMessage());
			}
			
		// Falls der angemedete Benutzer kein Admin ist
		} else {
			String companyType = currentUser.getCompany().getDType(); // Labor oder Klinikbenutzer ?
			
			// Falls klinikbenutzer
			if (companyType.equals("Clinic")) {
				// Finde nur Aufträge bezüglich der zu Grunde liegenden Klinik den Benutzers
				Map<String, Clinic> queryParams = new HashMap();
				Clinic clinic = (Clinic) currentUser.getCompany();
				queryParams.put("clinic", clinic);
				try{
					this.orderList = orderService.findWithNamedQuery(Order.FIND_BY_CLINIC, queryParams);
					this.laborList = laborService.findWithNamedQuery(Labor.FIND_ALL); // Alle Labore stehen dem Klinikbenutzer zur Auswahl
				}catch(Exception e){
					logger.error(e.getCause().getMessage());
				}
			
			// Falls Laborbenutzer
			} else if (companyType.equals("Labor")) {
				Labor labor = (Labor) currentUser.getCompany();
				try{
					// Finde alle Aufträge bezüglich des zu Grunde liegenden Labors des Benutzers und miot Status != NEW
					this.orderList = orderService.findByNativeQuery("select * from orders where labor_id="+labor.getId().toString()+ " and orderstate != 'NEW';"); 
					// Es steht nur das eigene Labor zur Verfügung
					this.laborList = laborService.findByNativeQuery("select * from companies where id="+labor.getId()); 
				} catch(Exception e){
					logger.error(e.getCause().getMessage());
				}
				
				// Für Filteroption nach Benutzer und dessen LaborParameter
				this.selectedUser=currentUser;
				Map<String, Labor> queryParams = new HashMap();
				queryParams.put("labor", labor);
				try{
					// Liste der Auswählbaren Benutzer für Laborbenutzer
					this.userList= userService.findWithNamedQuery(PMUser.FIND_ALL_BY_LABOR, queryParams);
				} catch(Exception e){
					logger.error(e.getCause().getMessage());
				}
			}
		}
		logger.debug("END Initialize OrderPM");
	}


	public void postsetOrderParams() {
		System.out.println("######################################");
		logger.debug("BEGIN OrderPM.postsetOrderParams()");
		try {
			orderService.update(this.selectedOrder);
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage("Fehler", e.getCause()
					.getMessage()));
		}

		FacesContext context = FacesContext.getCurrentInstance();
		context.addMessage(null, new FacesMessage(
				"Parameter erfolgreich gespeichert"));
		logger.debug("END OrderPM.postsetOrderParams()");
	}
	


}
 
Zuletzt bearbeitet:

NoXiD

Bekanntes Mitglied
schlägt auf deiner Seite irgendwo eine Validation fehl? Das kann auch zu merkwürdigen Ereignissen in PF kommen, ansonsten versuch mal beim CommandButton
Code:
process="@this"
hinzuzufügen...
 

SubSonniC

Mitglied
Soweit ich das erkennen kann schlägt hier nichts fehl.

Was mir aufgefallen ist, ist dass sobald ich den Button anklicke, die init() Methode der Bean ausgerührt wird. Aber er kommt niemals in die entscheidende Methode postsetOrderParams().

Ein process="@this" hat da auch keine Abhilfe gebracht.

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F PrimeFaces commandButton und actionListener Web Tier 6
M Primefaces COmmandBUtton Web Tier 8
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
T JSF Primefaces: selectedvalue von "selectmanyCheckbox" geht verloren Web Tier 0
W JSF Primefaces Selection Mode Web Tier 2
W JSF einfache DataTable PrimeFaces Web Tier 1
FINF_AW_Alex JSF PrimeFaces Dialog verlinken Web Tier 3
W JSF Primefaces Web Tier 5
F JSF Problem mit Primefaces Web Tier 7
F JSF Problem mit Primefaces Web Tier 4
S JQuery und Primefaces (Immer wieder Ärger damit) Web Tier 0
K JSON in Primefaces Table Web Tier 3
C JSF Zusammenarbeit Primefaces und Tomahawk. Web Tier 2
J JSF Grad der Barrierefreiheit von PrimeFaces, ICEFaces, RichFaces und OpenFaces Web Tier 2
P JSF Primefaces Picklist-Ersatz mit vielen Daten Web Tier 4
S primefaces picklist untereinander anordnen Web Tier 6
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
M onNodeExpand listener in PrimeFaces Web Tier 4
F Primefaces Dialog Web Tier 7
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
F Primefaces Datatable => Inplaces Web Tier 3
F Primefaces Datatable Web Tier 6
F JSF Primefaces 3.3 treetable Web Tier 9
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
M JSF Dynamische Größe bei Primefaces Komponenten Web Tier 2
P PrimeFaces DataGrid Click "simulieren" Web Tier 5
J JSF2+primefaces? Web Tier 20
H JSF JSF 2.0 (Primefaces) commandLinks mit action="mypage.xhtml" ohne die URL im Browser zu ändern Web Tier 8
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
F Primefaces Einstieg Web Tier 1
R Primefaces: No Library Found For This Namespace Web Tier 4
D JSF Ajax mit Facelets (PrimeFaces) Web Tier 4
Z Primefaces sieht grausam aus Web Tier 1
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
Z PrimeFaces (/ JSF) Konfigurationsproblem Web Tier 8
F JSF CommandButton innerhalb eines div´s (mit onClick) Web Tier 2
N JSF CommandButton Daten aus anderem Form auslesen Web Tier 3
M <p:accordionPanel <ui:repeat <p:commandButton Action funktioniert teilweise Web Tier 3
S JSF CommandButton soll keine Request starten! Web Tier 2
K RichFaces CommandButton mit PopUp verwenden Web Tier 2
aze JSF CommandButton:Action wird nicht ausgeführt Web Tier 2
S [JSF] CommandButton/Link ohne Validierung Web Tier 3
P JSF 1.2 commandButton in dataTable Web Tier 2
M JSF: CommandButton übergibt den Parameter nicht Web Tier 3
L JSF: commandButton reagiert nicht Web Tier 10
J JSF - CommandButton keine Action Web Tier 14
pkm Probleme mit einem AJAX-Call in einem dynamischen Webprojekt Web Tier 15
A Dojo: Tab deaktivieren wenn in einem Listenfeld ein bestimmter Wert steht Web Tier 3
J Suche nach einem Webframework Web Tier 5
S CDI: Bean aus einem anderen jar Web Tier 3
M JSF Zugriff auf mehrere Formulareinträge in einem Validator Web Tier 9
J Faces response aus einem anderen Servlet heraus rendern Web Tier 4
E Servlet mit einem Link aufrufen? Web Tier 13
P Ist es möglich einen Returnwert einem httpRequest zu übergeben Web Tier 3
H Nochmals Tag in einem Tag Web Tier 3
H Tag in einem anderen Tag Web Tier 2
S Verlinkung von JSF-Seiten in einem gecshützten Bereich Web Tier 2
T In einem Struts Tag Werte mit Java einfügen Web Tier 2
G WebSeite hinter einem Login auslesen Web Tier 8
U Grafik aus einem Datenmodell generieren Web Tier 2
G Javascriptfunction aus einem Sucess-path aufrufen Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben