. 내가 처음에 말해야 할 또 하나의 점은 JSF 개발 과정에서 꽤 새로운 점이라는 것입니다.PrimeFaces DataTable에 목록 표시 및 선택
내가 JSF, PrimeFaces, 최대 절전 모드 및 PostgreSQL을 사용하고 있습니다.
지금 나는 새로운 사용자 등록 양식에 일하고 있습니다. 이 테스트 응용 프로그램은 네 페이지로 구성됩니다. 첫 번째 페이지에는 기본 정적 정보가 들어 있으며, 두 번째 페이지에는 사용자에 대한 주요 정보를 채우는 양식이며, 세 번째 페이지 사용자는 무료 용어를 선택합니다 (여기에 내 문제가 있습니다!). 마지막으로 채우기 또는 choosed 정보.세 번째 페이지 : 여기
라디오 체크 박스와 하나의 선택과 DataTable을 PrimeFaces이다. 나는 PrimeFaces show case과 BalusC's Datatables tutorial을 따랐다. 문제는 db의 채워지지 않은 목록과 함께 표시됩니다. 주요 문제는 속성이있는 개인 CollectionTerm selectedTerm 어디에 선택 행을 저장해야합니다.
오류 로그 :
[javax.el.ELException: Error reading 'dataList' on type de.ibmt.upb.model.CollectionTerm] with root cause
org.postgresql.util.PSQLException: ERROR: column collection0_.selectedterm does not exist
Position: 78
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:302)
at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at com.sun.proxy.$Proxy25.executeQuery(Unknown Source)
at org.hibernate.loader.Loader.getResultSet(Loader.java:2031)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1832)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1811)
at org.hibernate.loader.Loader.doQuery(Loader.java:899)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:341)
at org.hibernate.loader.Loader.doList(Loader.java:2516)
at org.hibernate.loader.Loader.doList(Loader.java:2502)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2332)
at org.hibernate.loader.Loader.list(Loader.java:2327)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:490)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1247)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
at de.ibmt.upb.model.CollectionTerm.loadDataList(CollectionTerm.java:90)
at de.ibmt.upb.model.CollectionTerm.getDataList(CollectionTerm.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:169)
at org.apache.el.parser.AstValue.getValue(AstValue.java:183)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96)
at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:246)
at javax.faces.component.UIData.getValue(UIData.java:2028)
at org.primefaces.component.datatable.DataTable.getValue(DataTable.java:867)
at org.primefaces.component.api.UIData.getDataModel(UIData.java:579)
at org.primefaces.component.api.UIData.setRowModel(UIData.java:409)
at org.primefaces.component.api.UIData.setRowIndex(UIData.java:401)
at javax.faces.component.UIData.encodeEnd(UIData.java:1690)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:63)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
at org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:90)
at org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:72)
at org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:46)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:580)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:762)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:758)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:758)
at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1900)
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:285)
at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:115)
at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
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:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
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)
관리 콩 :
@ManagedBean
@Entity
@Table(name="COLLECTION_TABLE")
public class CollectionTerm implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Integer c_id;
private Date dateCollection;
private Time timeCollection;
@OneToMany(mappedBy="coll")
private Collection<UserDetails> userDetails = new ArrayList<UserDetails>();
@ElementCollection(targetClass=CollectionTerm.class)
private List<CollectionTerm> dataList;
private CollectionTerm selectedTerm;
public CollectionTerm() {
}
///// getters and setters /////
public List<CollectionTerm> getDataList() {
if (FacesContext.getCurrentInstance().getRenderResponse()) {
loadDataList();
}
return dataList;
}
private void loadDataList() {
Session session = HibernateUtil.getSessionFactory().openSession();
dataList = session.createQuery("from CollectionTerm").list();
}
}
JSF :
<h:form id="collection">
<p:fieldset legend="Date and time">
<p:dataTable id="collection" value="#{coll.dataList}" var="coll" rowKey="#{coll.c_id}" selection="coll.selectedTerm">
<p:column selectionMode="single" style="width:2%" />
<p:column >
#{coll.timeCollection}
</p:column>
<p:column>
#{coll.dateCollection}
</p:column>
<p:column>
#{coll.c_id}
</p:column>
</p:dataTable>
<p:commandButton value="Back" action="registrationback" ajax="false" />
<p:commandButton value="Next" action="recap" ajax="false" />
<p:commandButton value="Test" action="testcollection" ajax="false" />
</p:fieldset>
</h:form>
얼굴-설정 :
<managed-bean>
<managed-bean-name>coll</managed-bean-name>
<managed-bean-class>de.ibmt.upb.model.CollectionTerm</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>userService</managed-bean-name>
<managed-bean-class>de.ibmt.upb.model.UserDetails</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>term</property-name>
<value>#{term}</value>
</managed-property>
<managed-property>
<property-name>coll</property-name>
<value>#{coll}</value>
</managed-property>
</managed-bean>
내가 뭘 잘못하고있는거야? 어떤 답변이나 권장 사항
감사합니다!
도움 주셔서 감사합니다. 늦은 피드백에 대해 사과드립니다.나는 이전의 콩을 두 개의 분리 된 것으로 나누었으며, 이제 훨씬 더 명확 해졌습니다. 하지만 또 다른 문제가 있습니다. 라디오 확인란을 사용하여 PrimeFaces 데이터 테이블을 설정하면이 오류를 반환합니다. javax.el.PropertyNotFoundException : ** java.lang.String 유형에서 'c_id'속성을 찾을 수 없습니다. ** 이제 정말로 무엇을 변경해야하는지 모르겠습니다. . 그러나 아마도이 오류 메시지에서만 말할 수 있습니다. – PrincAm
@PrincAm, 확실한 답을 얻기 위해 전체 질문을 다시 게시해야하지만 가장 좋은 추측은 JSF 변환 관련 문제가 있다는 것입니다. – kolossus