Odwołanie do modelu w JSF

0

Zerknijcie na ten kod i prosze o podpowiedz poniewaz nie wiem w jaki sposob odwoływać sie do DataModel na stronie.xhtml w projekcie JSF. W miejscach znakow zapytania chciałbym, wyswietlic id oraz login uzytkownikow zapisanych w modelu.W DataModel zapisuja sie obiekty z modelu User, ktore maja pola id oraz login.
Ponizej wrzucam kod klasy bean oraz kod strony

 
@ManagedBean(name = "userServiceImpl")
@SessionScoped
@Component
public class UserServiceImpl implements Serializable

{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	
	private User user;
	
	private DataModel<User> modelUser;

	@Autowired
	private UserDaoImpl daoUser;

	
	
	public UserDaoImpl getDaoUser() {
		return daoUser;
	}

	public void setDaoUser(UserDaoImpl daoUser) {
		this.daoUser = daoUser;
	}

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	
	
	public DataModel<User> getModelUser() {
		return modelUser;
	}

	public void setModelUser(DataModel<User> modelUser) {
		this.modelUser = modelUser;
	}

	public void addUser(User user) {
		
		daoUser.add(user);
		

	}

	@PostConstruct
	public void allUsers() {

		modelUser = new ListDataModel<User>(); 
		modelUser.setWrappedData(daoUser.allUsers());
		System.out.println(modelUser.getRowCount());
		
	}

}

 
<h:form>
				<h:panelGrid>
					<p:dataTable id="tabelaUzytkownicy" var="user"
						value="#{userServiceImpl.modelUser}"
						paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
						paginator="true" rows="10" style="margin-bottom:20px">

						<p:column>
							<f:facet name="header">
								<h:outputText value="id" />
							</f:facet>
							<h:outputText value="?????????????????????" />
						</p:column>

						<p:column>
							<f:facet name="header">
								<h:outputText value="login" />
							</f:facet>
							<h:outputText value="??????????????????????" />
						</p:column>

					</p:dataTable>
</h:form>
0

Ale gdzie natrafiłeś na jakiś problem? Masz ten dataTable w JSF, zadeklarowałeś sobie zmienną user i na niej operujesz.

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="login" />
                            </f:facet>
                            <h:outputText value="#{user.login}" />
                        </p:column>
0

Zerknijcie na to. Probuje z tym walczyc ale sam nie dam rady bo wywala mi

WARNING: /addUser.xhtml @18,36 value="#{user.id}": Target Unreachable, identifier 'user' resolved to null
javax.el.PropertyNotFoundException: /addUser.xhtml @18,36 value="#{user.id}": Target Unreachable, identifier 'user' resolved to null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:97)
	at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:128)
	at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1023)
	at javax.faces.component.UIInput.validate(UIInput.java:953)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1204)
	at javax.faces.component.UIInput.processValidators(UIInput.java:693)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
	at javax.faces.component.UIForm.processValidators(UIForm.java:240)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

maj 10, 2015 6:53:57 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/HHwebJSF] threw exception [/addUser.xhtml @18,36 value="#{user.id}": Target Unreachable, identifier 'user' resolved to null] with root cause
javax.el.PropertyNotFoundException: /addUser.xhtml @18,36 value="#{user.id}": Target Unreachable, identifier 'user' resolved to null
	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:97)
	at org.primefaces.util.ComponentUtils.getConverter(ComponentUtils.java:128)
	at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:171)
	at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1023)
	at javax.faces.component.UIInput.validate(UIInput.java:953)
	at javax.faces.component.UIInput.executeValidate(UIInput.java:1204)
	at javax.faces.component.UIInput.processValidators(UIInput.java:693)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
	at javax.faces.component.UIForm.processValidators(UIForm.java:240)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
	at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081)
	at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159)
	at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


 

Klasa model:

public class User {

	private int id;
	private String firsName;

	public User() {

	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getFirsName() {
		return firsName;
	}

	public void setFirsName(String firsName) {
		this.firsName = firsName;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", firsName=" + firsName + "]";
	}

}

 

Klasa Bean:


@ManagedBean
@SessionScoped
public class UserBean implements Serializable {

	private static final long serialVersionUID = 1L;
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	public String addUser() {
		user = new User();
		return null;
	}

}
 

Strona xhtml:

 
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.org/ui">

<ui:composition template="/tamplate.xhtml">

	<ui:define name="content">

		<h:form>
			<h:panelGrid id="addUserPanel" columns="2">
				<p:outputLabel id="labelId" value="id"></p:outputLabel>
				<p:inputText id="fieldId" value="#{user.id}"
					styleClass="polaWprowadzania"></p:inputText>

				<p:outputLabel id="labelFirsName" value="firsName"></p:outputLabel>
				<p:inputText id="fieldFirsName" styleClass="polaWprowadzania"
					value="#{user.firsName}"></p:inputText>
			</h:panelGrid>
			<h:commandButton id="PrzyciskStworzUzytkownika"
				image="resources/obrazki/dodaj.png" action="#{userBean.addUser}" >
			</h:commandButton>
		</h:form>
	</ui:define>

</ui:composition>
</html>
0

W stack trace masz:

SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path [/HHwebJSF] threw exception [/addUser.xhtml @18,36 value="#{user.id}": Target Unreachable, identifier 'user' resolved to null] with root cause
javax.el.PropertyNotFoundException: /addUser.xhtml @18,36 value="#{user.id}": Target Unreachable, identifier 'user' resolved to null

W widoku jest:

"#{user.id}"

Nazwa user jest nieznana w EL. Musisz podac Managed Bean, do ktorego to dotyczy, czyli mniej wiecej:

"#{userBean.user.id}"

IDE powinno wykrywac Ci takie kwasy (przynajmniej NetBeans robi to bardzo dobrze). Teraz powinienes miec NullPointerException.

W Kodzie masz:

@ManagedBean
@SessionScoped
public class UserBean implements Serializable {
 
    private static final long serialVersionUID = 1L;
    private User user;
 
    public User getUser() {
        return user;
    }
 
    public void setUser(User user) {
        this.user = user;
    }
 
    public String addUser() {
        user = new User();
        return null;
    }
 

Tu widać, że masz zmienną user ustawioną na null. Zmień na:

@ManagedBean
@SessionScoped
public class UserBean implements Serializable {
 
    private static final long serialVersionUID = 1L;
    private User user;

    @PostConstruct
    private void init() {
          user = new User();
    }
 
    public User getUser() {
        return user;
    }
 
    public void setUser(User user) {
        this.user = user;
    }
 
    public String addUser() {
         // sorry, ale ten kod to jakis belkot
         // dlaczego zwracasz null?
         // to ma byc chyba akcja z nawigacja, ale jest to krzywo
         // zrobione
        user = new User();
        return null;
    }
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1