Witam
Mam problem aby po wybraniu wartości z kontrolki p:selectOneMenu automatycznie pojawiła się jej wartość w innej kontrolce.
Chciałbym aby po wybraniu wartości z selectOneMenu od razu pojawiły się wartości w:
- p:panel id="pnl"
- h:outputText id="out1"
Obecnie po wybraniu nic się nie dzieje, jedynie odpala się metoda:
List<SystemConf> getSystemsConfs()
Mam primefaces w wersji 3.2, Odpalam na Glassfish 3.1.
Starałem się robić zgodnie z http://www.primefaces.org/showcase-labs/ui/pprSelect.jsf chociaż innych kombinacji także próbowałem.
Kod poniżej (trochę jest okrojony).
index.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Test PrimeFaces</title>
</h:head>
<h:body>
<h:form>
<h:panelGrid columns="2" id="systemTable" >
<h:outputText value="Wybierz system: " />
<p:selectOneMenu id="systems" value="#{actionController.systemConf}" effect="fade">
<f:selectItem itemValue="#{null}" itemLabel="Wybierz ..." />
<f:selectItems value="#{actionController.systemsConfs}" var="sysConf" itemLabel="#{sysConf.systemName}" itemValue="#{sysConf}"/>
<p:ajax update="pnl out1" listener="#{actionController.systemConfChanged}"/>
</p:selectOneMenu>
</h:panelGrid>
<p:panel id="pnl" header="Parametry: #{actionController.systemConf.systemName}">
<h:outputText id="out1" value="Wybrany system: #{actionController.systemConf.sourceServer}" />
</p:panel>
</h:form>
</h:body>
</html>
kontroler ActionController.java
package baza.jpa.controllers;
import baza.jpa.SystemConf;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class ActionController {
private SystemConf systemConf;
private List<SystemConf> systemsConfs;
public SystemConf getSystemConf() {
return systemConf;
}
public void setSystemConf(SystemConf systemConf) {
this.systemConf = systemConf;
}
public List<SystemConf> getSystemsConfs() {
return systemsConfs;
}
public void setSystemsConfs(List<SystemConf> systemsConfs) {
this.systemsConfs = systemsConfs;
}
public void systemConfChanged() {
System.out.println("listener " + systemConf.getSourceServer());
}
/**
* Creates a new instance of ActionController
*/
public ActionController() {
systemsConfs = new ArrayList<SystemConf>();
systemsConfs.add(new SystemConf(1,"Nazwa 1", "System 1"));
systemsConfs.add(new SystemConf(2,"Nazwa 2", "System 2"));
systemsConfs.add(new SystemConf(3,"Nazwa 3", "System 3"));
systemsConfs.add(new SystemConf(4,"Nazwa 4", "System 4"));
}
}
klasa pojo SystemConf.java:
package baza.jpa;
import java.io.Serializable;
import javax.persistence.*;
@Entity
@Table(name = "SystemConf")
public class SystemConf implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer systemConfId;
private String systemName;
private String sourceServer;
public SystemConf() {
}
public SystemConf(Integer systemConfId) {
this.systemConfId = systemConfId;
}
public SystemConf(Integer systemConfId, String systemName, String sourceServer) {
this.systemConfId = systemConfId;
this.systemName = systemName;
this.sourceServer = sourceServer;
}
public Integer getSystemConfId() {
return systemConfId;
}
public void setSystemConfId(Integer systemConfId) {
this.systemConfId = systemConfId;
}
public String getSystemName() {
return systemName;
}
public void setSystemName(String systemName) {
this.systemName = systemName;
}
public String getSourceServer() {
return sourceServer;
}
public void setSourceServer(String sourceServer) {
this.sourceServer = sourceServer;
}
@Override
public String toString() {
return "baza.jpa.SystemConf[ systemConfId=" + systemConfId + " ]";
}
}