gpt4 book ai didi

java - JSF 中渲染错误以及读取适当的 bean 属性时出错

转载 作者:行者123 更新时间:2023-12-01 11:10:23 28 4
gpt4 key购买 nike

我曾经让我的平台配置工作正常,然后我添加了一个身份验证过程,但它不再工作了。它表示未读取firstedit,并且 View 渲染无法正常工作。

AVERTISSEMENT: JSF1063 : AVERTISSEMENT ! Définition d’une valeur d’attribut non-sérialisable dans HttpSession (clé : UserloginMB, classe de la valeur : empsuite.managedbean.UserloginManagedBean).
sept. 07, 2015 9:18:56 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
GRAVE: Error Rendering View[/module/config/index.xhtml]
javax.el.ELException: /module/config/index.xhtml @15,60 rendered="#{platformMB.firstedit == '0'}": Error reading 'firstedit' on type empsuite.managedbean.PlatformManagedBean
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:458)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1850)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.el.ELException: Error reading 'firstedit' on type empsuite.managedbean.PlatformManagedBean
at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:167)
at org.apache.el.parser.AstEqual.getValue(AstEqual.java:37)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
... 37 more
Caused by: java.lang.NullPointerException
at empsuite.managedbean.PlatformManagedBean.getPlatformList(PlatformManagedBean.java:133)
at empsuite.managedbean.PlatformManagedBean.getFirstedit(PlatformManagedBean.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
... 43 more

sept. 07, 2015 9:18:56 PM com.sun.faces.context.ExceptionHandlerImpl log
FATAL: JSF1073 : javax.el.ELException intercepté durant le traitement de RENDER_RESPONSE 6 : UIComponent-ClientId=, Message=/module/config/index.xhtml @15,60 rendered="#{platformMB.firstedit == '0'}": Error reading 'firstedit' on type empsuite.managedbean.PlatformManagedBean
sept. 07, 2015 9:18:56 PM com.sun.faces.context.ExceptionHandlerImpl log
FATAL: /module/config/index.xhtml @15,60 rendered="#{platformMB.firstedit == '0'}": Error reading 'firstedit' on type empsuite.managedbean.PlatformManagedBean
javax.el.ELException: /module/config/index.xhtml @15,60 rendered="#{platformMB.firstedit == '0'}": Error reading 'firstedit' on type empsuite.managedbean.PlatformManagedBean
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:458)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1850)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:890)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:458)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:134)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.el.ELException: Error reading 'firstedit' on type empsuite.managedbean.PlatformManagedBean
at javax.el.BeanELResolver.getValue(BeanELResolver.java:101)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:167)
at org.apache.el.parser.AstEqual.getValue(AstEqual.java:37)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
... 37 more
Caused by: java.lang.NullPointerException
at empsuite.managedbean.PlatformManagedBean.getPlatformList(PlatformManagedBean.java:133)
at empsuite.managedbean.PlatformManagedBean.getFirstedit(PlatformManagedBean.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:97)
... 43 more

导致错误的文件:

<h:form id="formConfig">
<h:panelGroup rendered="#{platformMB.firstedit == '0'}">
<p:messages id="messages" showSummary="false" showDetail="true" autoUpdate="true" closable="true" />
<p:dataTable id="platform" var="platform" value="#{platformMB.platformList}" style="width: 90%" editable="true">
<p:ajax event="rowEdit" listener="#{platformMB.onEdit}" update=":formConfig:messages"/>
<p:ajax event="rowEditCancel" listener="#{platformMB.onCancel}" update=":formConfig:messages"/>

<p:column headerText="Titre">
<f:facet name="Config">
<h:outputText value="TitreSite"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{platform.titresite}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{platform.titresite}" label="Titre">
<f:validateLength minimum="10" maximum="100"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Description">
<f:facet name="Config">
<h:outputText value="Description"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{platform.description}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{platform.description}" label="Description">
<f:validateLength minimum="0" maximum="1000"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Url">
<f:facet name="Config">
<h:outputText value="Url"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{platform.url}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{platform.url}" label="Url">
<f:validateLength minimum="0" maximum="45"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Adresse">
<f:facet name="Config">
<h:outputText value="Adresse"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{platform.adress}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{platform.adress}" label="Adresse">
<f:validateLength minimum="20" maximum="500"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Phone">
<f:facet name="Config">
<h:outputText value="Phone"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{platform.phone}"/>
</f:facet>
<f:facet name="input">
<p:inputText value="#{platform.phone}" label="Télephone">
<f:validateLength minimum="8" maximum="11"/>
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="E-mail Principal">
<f:facet name="Config">
<h:outputText value="E-mail Principal"/>
</f:facet>
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{platform.primarymail}"/>
</f:facet>
<f:facet name="input">
<p:inputText validatorMessage="E-mail : l'adresse e-mail saisie est incorrecte" value="#{platform.primarymail}" label="E-mail">
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
</p:inputText>
</f:facet>
</p:cellEditor>
</p:column>
<p:column style="width:20%">
<f:facet name="Config">Mise à jour</f:facet>
<p:rowEditor/>
</p:column>

</p:dataTable>


</h:panelGroup>
<h:panelGroup rendered="#{platformMB.firstedit == '1'}">

<table>
<tr>
<td><h:outputLabel for="titresite" value="Titre de l'institution : "/></td>
<td><p:inputText id="titresite" value="#{platformMB.titresite}">
<f:validateLength minimum="10" maximum="100"/>
<p:ajax event="blur" update="titresiteMsg"/>
</p:inputText>
<p:message id="titresiteMsg" for="titresite" display="icon"/>
</td>
</tr>
<tr>
<td><h:outputLabel for="description" value="Description de l'institution : "/></td>
<td><p:inputText id="description" value="#{platformMB.description}">
<f:validateLength minimum="0" maximum="1000"/>
<p:ajax event="blur" update="descriptionMsg"/>
</p:inputText>
<p:message id="descriptionMsg" for="description" display="icon"/>
</td>
</tr>
<tr>
<td><h:outputLabel for="url" value="Adresse du site Web d'accueil : "/></td>
<td><p:inputText id="url" value="#{platformMB.url}">
<f:validateLength minimum="0" maximum="45"/>
<p:ajax event="blur" update="urlMsg"/>
</p:inputText>
<p:message id="urlMsg" for="url" display="icon"/>
</td>
</tr>
<tr>
<td><h:outputLabel for="adress" value="Adresse de l'institution : "/></td>
<td><p:inputText id="adress" value="#{platformMB.adress}">
<f:validateLength minimum="20" maximum="500"/>
<p:ajax event="blur" update="adressMsg"/>
</p:inputText>
<p:message id="adressMsg" for="adress" display="icon"/>
</td>
</tr>
<tr>
<td><h:outputLabel for="phone" value="Téléphone de l'institution : "/></td>
<td><p:inputText id="phone" value="#{platformMB.phone}">
<f:validateLength minimum="8" maximum="11"/>
<f:converter converterId="javax.faces.Integer"/>
<p:ajax event="blur" update="phoneMsg"/>
</p:inputText>
<p:message id="phoneMsg" for="phone" display="icon"/>
</td>
</tr>
<tr>
<td><h:outputLabel for="primarymail" value="E-mail principal de l'institution : "/></td>
<td><p:inputText id="primarymail" value="#{platformMB.primarymail}">
<f:validateRegex pattern="^[_A-Za-z0-9-\+]+(\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\.[A-Za-z0-9]+)*(\.[A-Za-z]{2,})$" />
<p:ajax event="blur" update="primarymailMsg"/>
</p:inputText>
<p:message id="primarymailMsg" for="primarymail" display="icon"/>
</td>
</tr>
<tr>
<td><p:commandButton id="addPlatform" value="Sauvegarder" action="#{platformMB.addPlatform}" ajax="false"/></td>
<td><p:commandButton id="reset" value="Reset" action="#{platformMB.reset}" ajax="false"/></td>
</tr>
</table>

</h:panelGroup>
</h:form>

和 DAO:

package empsuite.managedbean;

@ManagedBean(name="platformMB")
@ApplicationScoped
public class PlatformManagedBean implements Serializable{

private static final long serialVersionUID = 1L;
private static final String SUCCESS = "";
private static final String ERROR = "";

@ManagedProperty(value="#{PlatformService}")
PlatformService platformService;
List<Platform> platformList;
String titresite;
String description;
String url;
String adress;
int phone;
String primarymail;
int id;

int firstedit;


public int getFirstedit() {
if(getPlatformList().isEmpty()){
return 1;
// Donc on affiche le formulaire d'ajout
}
else {return 0;
// Sinon lecture et modification sans ajout
}
}
public void setFirstedit(int firstedit) {this.firstedit = firstedit; }



public List<Platform> getPlatformList() {
if(platformList == null){
platformList = new ArrayList<Platform>();
platformList.addAll(getPlatformService().getPlatform());
}
return platformList;
}

public void setPlatformList(List<Platform> platformList) {
this.platformList = platformList;
}

}

正如我所说,它工作正常,直到我将身份验证添加到此网络应用程序,但没有与此文件相关的任何内容,没有添加任何授权,任何涉及此的内容都没有被触及。

注意:当我强制浏览器访问该页面时,似乎firstedit得到值1并显示添加平台面板网格,就像平台表没有数据一样(其逻辑是如果firstedit为1(表示表为空)则显示添加表单,如果表有1个条目,则将其设置为0并显示编辑表单)

编辑 HQL 甚至没有执行,就像它在执行 HQL 之前读取 int 并知道该 int 是否应该计数 0 或 1(指向 null)。但为什么呢?

编辑 2 当我删除 rendered="#{platformMB.firstedit == '0'}" 时,platformList 出现错误,带有空指针?

最佳答案

您调用 getPlatformService().getPlatform(),但您的 getPlatformService() 返回 null。检查platformService初始化相关的代码/配置。

关于java - JSF 中渲染错误以及读取适当的 bean 属性时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32446597/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com