Java + JSF - 在 bean 中构造 array/list 方法时出错,结合了 2 个参数
Java + JSF - Error in constructing array/list method in beans, with 2 parameters combined
大家晚安。我是 Java 的初学者,非常基础(我还在学习这门语言)。我正在构建一个针对汽车修理厂的应用程序;它必须管理车辆维护数据。我在最开始,从项目的一小部分开始试验,逐渐扩展和学习。我正在使用我在大学学到的旧 JDBC(我仍然必须了解 JPA + Hibernate,仍然很原始)。我将 Eclipse 2020 与 Maven、Java 8、JSF 2.2、BD MySql 和前面的 Primefaces 一起使用。
改编另一个项目的一部分,我在 Java 课程中学习过,该项目运行良好,在成功填充数据 Table 后使用“select * 来自 ORDSERV”语句一个正常工作的 prepareStatement,从数据库中提取所有记录,我想尝试使用 2 个标准交叉同一个数组,服务订单号 + 服务类别(“select * 来自 ORDSERV,其中 OSCTRL_NR_OS = ? AND CATEG_CD_CATEG =?") 在持久层和测试中一切正常,但在 Bean 中.. 事情变得疯狂了!
该项目没有运行。 Eclipse在页面上指出错误说我正在调用的方法不能被调用,因为它没有被标识为一个bean成员! (“searchOS 无法解析为 osb 的成员”)。
有人可以给我一盏灯吗??代码和错误堆栈如下。
我的母语是葡萄牙语,来自巴西。代码自然是用这种语言写的。
持久层:
package br.com.agoraeuquero.carrotop.repositorio;
import java.util.ArrayList;
import java.util.List;
import br.com.agoraeuquero.carrotop.modelo.ControleOS;
import br.com.agoraeuquero.carrotop.modelo.OrdemServico;
public class OrdemServicoDao extends Dao {
// LISTAR TODAS AS ORDENS DE SERVICO
public List<OrdemServico> listaTodasOS() throws Exception {
open();
stmt = con.prepareStatement("select * from ORDSERV");
rs = stmt.executeQuery();
List<OrdemServico> lista = new ArrayList<OrdemServico>();
while (rs.next()) {
OrdemServico os = new OrdemServico(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4),
rs.getString(5), rs.getString(6), rs.getString(7), rs.getDate(8), rs.getDate(9), rs.getString(10),
rs.getString(11), rs.getString(12), rs.getString(13), rs.getString(14));
lista.add(os);
}
close();
return lista;
}
// LISTA AS ORDENS DE SERVIÇO CONFORME CRITERIOS DE PESQUISA
public List<OrdemServico> pesquisaOS() throws Exception {
open();
Integer nrOrdemServico = 0;
String categoria = null;
stmt = con.prepareStatement("select * from ORDSERV where OSCTRL_NR_OS=? AND CATEG_CD_CATEG=?");
stmt.setInt(1, nrOrdemServico);
stmt.setString(2, categoria);
rs = stmt.executeQuery();
List<OrdemServico> lista = new ArrayList<OrdemServico>();
while (rs.next()) {
OrdemServico os = new OrdemServico(rs.getInt(1),rs.getInt(2),
rs.getString(3), rs.getString(4),rs.getString(5),rs.getString(6),
rs.getString(7),rs.getDate(8),rs.getDate(9),rs.getString(10),
rs.getString(11),rs.getString(12),rs.getString(13),rs.getString(14));
lista.add(os);
}
close();
return lista;
}
// LISTA TODOS OS NUMEROS E DATAS DE ORDENS DE SERVIÇO
public List<ControleOS> listaNrsOS() throws Exception {
open();
stmt = con.prepareStatement("select * from OSCTRL");
rs = stmt.executeQuery();
List<ControleOS> lista = new ArrayList<ControleOS>();
while (rs.next()) {
ControleOS cos = new ControleOS(rs.getInt(1), rs.getDate(2));
lista.add(cos);
}
close();
return lista;
}
}
这里主要是Bean(控制层),这是中心问题。方法getlistaTodasOS()
正常工作,问题是我需要做什么来更正方法getpesquisaOS
.
package br.com.agoraeuquero.carrotop.controle;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import br.com.agoraeuquero.carrotop.modelo.ControleOS;
import br.com.agoraeuquero.carrotop.modelo.OrdemServico;
import br.com.agoraeuquero.carrotop.repositorio.OrdemServicoDao;
@RequestScoped
@ManagedBean(name = "osb")
public class ServicoBean implements Serializable {
private static final long serialVersionUID = 1L;
private OrdemServico ordemServico;
private List<OrdemServico> ordemServicoLista;
private ControleOS controleOS;
private List<ControleOS> controleOSLista;
HttpSession session;
public ServicoBean() {
}
public OrdemServico getOrdemServico() {
return ordemServico;
}
public ControleOS getControleOS() {
return controleOS;
}
public void setControleOS(ControleOS controleOS) {
this.controleOS = controleOS;
}
public List<ControleOS> getControleOSLista() {
return controleOSLista;
}
public void setControleOSLista(List<ControleOS> controleOSLista) {
this.controleOSLista = controleOSLista;
}
public void setOrdemServico(OrdemServico ordemServico) {
this.ordemServico = ordemServico;
}
public List<OrdemServico> getOrdemServicoLista() {
return ordemServicoLista;
}
public void setOrdemServicoLista(List<OrdemServico> ordemServicoLista) {
this.ordemServicoLista = ordemServicoLista;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
// LISTA TODAS AS ORDENS DE SERVIÇO
public List<OrdemServico> getlistaTodasOS() {
FacesContext fc = FacesContext.getCurrentInstance();
try {
ordemServicoLista = new OrdemServicoDao().listaTodasOS();
} catch (Exception ex) {
ex.printStackTrace();
fc.addMessage(null, new FacesMessage("Erro :" + ex.getMessage()));
}
return ordemServicoLista;
}
// ## PRINCIPAL: PEDE 2 PARAMETROS (NR OS E COD CATEGORIA) PARA PESQUISAR ORDENS DE SERVICO
public List<OrdemServico> getpesquisaOS (Integer nrOrdemServico, String categoria) {
FacesContext facec = FacesContext.getCurrentInstance();
setOrdemServicoLista(ordemServicoLista);
try
{
ordemServicoLista = new OrdemServicoDao().pesquisaOS();
}
catch (Exception ex)
{
ex.printStackTrace();
facec.addMessage(null, new FacesMessage("Erro :" + ex.getMessage()));
}
return ordemServicoLista;
}
// LISTA TODOS OS NUMEROS E DATAS DE ORDENS DE SERVIÇO (TABELA CONTROLE DE O.S.)
public List<ControleOS> getlistaNrsOS() {
FacesContext fc = FacesContext.getCurrentInstance();
try {
controleOSLista = new OrdemServicoDao().listaNrsOS();
} catch (Exception ex) {
ex.printStackTrace();
fc.addMessage(null, new FacesMessage("Erro :" + ex.getMessage()));
}
return controleOSLista;
}
}
下面,页面:
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<!-- O metodo abaixo so é validado se o bean que o executa corresponder ao criterio do login -->
<h:head>
<f:metadata>
<f:event listener="#{mb.verificarLogin}" type="preRenderView">
</f:event>
</f:metadata>
</h:head>
<h:body>
<p:panel header="CarroTop - Pesquisa Ordens de Serviço"
style="font-size: 15px">
<h:form id="form1">
</h:form>
<h:form id="form3">
<p:commandButton value="Sair" action="#{mb.logout}" ajax="false"></p:commandButton>
</h:form>
</p:panel>
<p:panel header="Pesquisar Ordens de Serviço - Informe 2 Criterios">
<h:form id="form3">
<p:panelGrid columns="2">
<h:outputText value="Nº Ordem Serviço"/>
<p:inputText value="#{osb.pesquisaOS.nrAmostra}">
</p:inputText>
<h:outputText value="Nº Grupo (1, 3, 7 ou 9) "/>
<p:inputText value="#{osb.pesquisaOS.grupo}">
</p:inputText>
<p:commandButton value="Pesquisar" update=":form1;" ajax="true" action="#{osb.pesquisaOS}">
</p:commandButton>
<p:growl>
</p:growl>
</p:panelGrid>
</h:form>
</p:panel>
<p:panel header="Resultado da pesquisa" style="font-size: 15px">
<h:form id="form2">
<p:dataTable var="pesquisaOS" value="#{osb.pesquisaOS}"
style="font-size: 13px">
<p:column headerText="Id">
<h:outputText value="#{pesquisaOS.id}" />
</p:column>
<p:column headerText="Nº O.S.">
<h:outputText value="#{pesquisaOS.nrOrdemServico}" />
</p:column>
<p:column headerText="Categoria">
<h:outputText value="#{pesquisaOS.categoria}" />
</p:column>
<p:column headerText="Serviço">
<h:outputText value="#{pesquisaOS.servico}" />
</p:column>
<p:column headerText="Nº Renavam">
<h:outputText value="#{pesquisaOS.nrRenavam}" />
</p:column>
<p:column headerText="Nº Orçamento">
<h:outputText value="#{pesquisaOS.nrOrcamento}" />
</p:column>
<p:column headerText="Nº Chave DANFE (NFE)">
<h:outputText value="#{pesquisaOS.nrChaveDanfe}" />
</p:column>
<p:column headerText="Data Início Serviço">
<h:outputText value="#{pesquisaOS.dataInicioServico}">
<f:convertDateTime type="date" dateStyle="short"
pattern="dd/MM/yyyy">
</f:convertDateTime>
</h:outputText>
</p:column>
<p:column headerText="Data Final Serviço">
<h:outputText value="#{pesquisaOS.dataFinalServico}">
<f:convertDateTime type="date" dateStyle="short"
pattern="dd/MM/yyyy">
</f:convertDateTime>
</h:outputText>
</p:column>
<p:column headerText="Código Ocorrência">
<h:outputText value="#{pesquisaOS.codOcorrencia}" />
</p:column>
<p:column headerText="Mecânico Executor">
<h:outputText value="#{pesquisaOS.usuarioExecutor}" />
</p:column>
<p:column headerText="Serviço Autorizado por">
<h:outputText value="#{pesquisaOS.usuarioAutorizador}" />
</p:column>
<p:column headerText="Valor Orçado R$">
<h:outputText value="#{pesquisaOS.valorPrevisto}">
<f:convertNumber pattern="#.##0,00" type="currency" locale="pt_BR" >
</f:convertNumber>
</h:outputText>
</p:column>
<p:column headerText="Valor Real R$">
<h:outputText value="#{pesquisaOS.valorEfetivo}" />
</p:column>
</p:dataTable>
</h:form>
</p:panel>
</h:body>
</html>
最后,错误堆栈:
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/carrotop] threw exception [/ct3/logado.xhtml @32,54 value="#{osb.pesquisaOS.nrAmostra}": Property 'pesquisaOS' not found on type br.com.agoraeuquero.carrotop.controle.ServicoBean] with root cause
javax.el.PropertyNotFoundException: Property 'pesquisaOS' not found on type br.com.agoraeuquero.carrotop.controle.ServicoBean
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:268)
at javax.el.BeanELResolver$BeanProperties.access0(BeanELResolver.java:221)
at javax.el.BeanELResolver.property(BeanELResolver.java:355)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:95)
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:169)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:174)
at javax.faces.component.UIInput.getValue(UIInput.java:291)
at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:75)
at org.primefaces.component.inputtext.InputTextRenderer.encodeMarkup(InputTextRenderer.java:71)
at org.primefaces.component.inputtext.InputTextRenderer.encodeEnd(InputTextRenderer.java:52)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:89)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeBody(PanelGridRenderer.java:60)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:81)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:68)
at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:204)
at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:121)
at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:58)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
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:647)
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:502)
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:617)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
提前致谢!
ServicoBean class 有方法 getpesquisaOS() 和 getlistaNrsOS()。
应该是:
getPesquisaOS()
getListaNrsOS().
大家晚安。我是 Java 的初学者,非常基础(我还在学习这门语言)。我正在构建一个针对汽车修理厂的应用程序;它必须管理车辆维护数据。我在最开始,从项目的一小部分开始试验,逐渐扩展和学习。我正在使用我在大学学到的旧 JDBC(我仍然必须了解 JPA + Hibernate,仍然很原始)。我将 Eclipse 2020 与 Maven、Java 8、JSF 2.2、BD MySql 和前面的 Primefaces 一起使用。
改编另一个项目的一部分,我在 Java 课程中学习过,该项目运行良好,在成功填充数据 Table 后使用“select * 来自 ORDSERV”语句一个正常工作的 prepareStatement,从数据库中提取所有记录,我想尝试使用 2 个标准交叉同一个数组,服务订单号 + 服务类别(“select * 来自 ORDSERV,其中 OSCTRL_NR_OS = ? AND CATEG_CD_CATEG =?") 在持久层和测试中一切正常,但在 Bean 中.. 事情变得疯狂了!
该项目没有运行。 Eclipse在页面上指出错误说我正在调用的方法不能被调用,因为它没有被标识为一个bean成员! (“searchOS 无法解析为 osb 的成员”)。
有人可以给我一盏灯吗??代码和错误堆栈如下。
我的母语是葡萄牙语,来自巴西。代码自然是用这种语言写的。
持久层:
package br.com.agoraeuquero.carrotop.repositorio;
import java.util.ArrayList;
import java.util.List;
import br.com.agoraeuquero.carrotop.modelo.ControleOS;
import br.com.agoraeuquero.carrotop.modelo.OrdemServico;
public class OrdemServicoDao extends Dao {
// LISTAR TODAS AS ORDENS DE SERVICO
public List<OrdemServico> listaTodasOS() throws Exception {
open();
stmt = con.prepareStatement("select * from ORDSERV");
rs = stmt.executeQuery();
List<OrdemServico> lista = new ArrayList<OrdemServico>();
while (rs.next()) {
OrdemServico os = new OrdemServico(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4),
rs.getString(5), rs.getString(6), rs.getString(7), rs.getDate(8), rs.getDate(9), rs.getString(10),
rs.getString(11), rs.getString(12), rs.getString(13), rs.getString(14));
lista.add(os);
}
close();
return lista;
}
// LISTA AS ORDENS DE SERVIÇO CONFORME CRITERIOS DE PESQUISA
public List<OrdemServico> pesquisaOS() throws Exception {
open();
Integer nrOrdemServico = 0;
String categoria = null;
stmt = con.prepareStatement("select * from ORDSERV where OSCTRL_NR_OS=? AND CATEG_CD_CATEG=?");
stmt.setInt(1, nrOrdemServico);
stmt.setString(2, categoria);
rs = stmt.executeQuery();
List<OrdemServico> lista = new ArrayList<OrdemServico>();
while (rs.next()) {
OrdemServico os = new OrdemServico(rs.getInt(1),rs.getInt(2),
rs.getString(3), rs.getString(4),rs.getString(5),rs.getString(6),
rs.getString(7),rs.getDate(8),rs.getDate(9),rs.getString(10),
rs.getString(11),rs.getString(12),rs.getString(13),rs.getString(14));
lista.add(os);
}
close();
return lista;
}
// LISTA TODOS OS NUMEROS E DATAS DE ORDENS DE SERVIÇO
public List<ControleOS> listaNrsOS() throws Exception {
open();
stmt = con.prepareStatement("select * from OSCTRL");
rs = stmt.executeQuery();
List<ControleOS> lista = new ArrayList<ControleOS>();
while (rs.next()) {
ControleOS cos = new ControleOS(rs.getInt(1), rs.getDate(2));
lista.add(cos);
}
close();
return lista;
}
}
这里主要是Bean(控制层),这是中心问题。方法getlistaTodasOS()
正常工作,问题是我需要做什么来更正方法getpesquisaOS
.
package br.com.agoraeuquero.carrotop.controle;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import br.com.agoraeuquero.carrotop.modelo.ControleOS;
import br.com.agoraeuquero.carrotop.modelo.OrdemServico;
import br.com.agoraeuquero.carrotop.repositorio.OrdemServicoDao;
@RequestScoped
@ManagedBean(name = "osb")
public class ServicoBean implements Serializable {
private static final long serialVersionUID = 1L;
private OrdemServico ordemServico;
private List<OrdemServico> ordemServicoLista;
private ControleOS controleOS;
private List<ControleOS> controleOSLista;
HttpSession session;
public ServicoBean() {
}
public OrdemServico getOrdemServico() {
return ordemServico;
}
public ControleOS getControleOS() {
return controleOS;
}
public void setControleOS(ControleOS controleOS) {
this.controleOS = controleOS;
}
public List<ControleOS> getControleOSLista() {
return controleOSLista;
}
public void setControleOSLista(List<ControleOS> controleOSLista) {
this.controleOSLista = controleOSLista;
}
public void setOrdemServico(OrdemServico ordemServico) {
this.ordemServico = ordemServico;
}
public List<OrdemServico> getOrdemServicoLista() {
return ordemServicoLista;
}
public void setOrdemServicoLista(List<OrdemServico> ordemServicoLista) {
this.ordemServicoLista = ordemServicoLista;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
// LISTA TODAS AS ORDENS DE SERVIÇO
public List<OrdemServico> getlistaTodasOS() {
FacesContext fc = FacesContext.getCurrentInstance();
try {
ordemServicoLista = new OrdemServicoDao().listaTodasOS();
} catch (Exception ex) {
ex.printStackTrace();
fc.addMessage(null, new FacesMessage("Erro :" + ex.getMessage()));
}
return ordemServicoLista;
}
// ## PRINCIPAL: PEDE 2 PARAMETROS (NR OS E COD CATEGORIA) PARA PESQUISAR ORDENS DE SERVICO
public List<OrdemServico> getpesquisaOS (Integer nrOrdemServico, String categoria) {
FacesContext facec = FacesContext.getCurrentInstance();
setOrdemServicoLista(ordemServicoLista);
try
{
ordemServicoLista = new OrdemServicoDao().pesquisaOS();
}
catch (Exception ex)
{
ex.printStackTrace();
facec.addMessage(null, new FacesMessage("Erro :" + ex.getMessage()));
}
return ordemServicoLista;
}
// LISTA TODOS OS NUMEROS E DATAS DE ORDENS DE SERVIÇO (TABELA CONTROLE DE O.S.)
public List<ControleOS> getlistaNrsOS() {
FacesContext fc = FacesContext.getCurrentInstance();
try {
controleOSLista = new OrdemServicoDao().listaNrsOS();
} catch (Exception ex) {
ex.printStackTrace();
fc.addMessage(null, new FacesMessage("Erro :" + ex.getMessage()));
}
return controleOSLista;
}
}
下面,页面:
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui">
<!-- O metodo abaixo so é validado se o bean que o executa corresponder ao criterio do login -->
<h:head>
<f:metadata>
<f:event listener="#{mb.verificarLogin}" type="preRenderView">
</f:event>
</f:metadata>
</h:head>
<h:body>
<p:panel header="CarroTop - Pesquisa Ordens de Serviço"
style="font-size: 15px">
<h:form id="form1">
</h:form>
<h:form id="form3">
<p:commandButton value="Sair" action="#{mb.logout}" ajax="false"></p:commandButton>
</h:form>
</p:panel>
<p:panel header="Pesquisar Ordens de Serviço - Informe 2 Criterios">
<h:form id="form3">
<p:panelGrid columns="2">
<h:outputText value="Nº Ordem Serviço"/>
<p:inputText value="#{osb.pesquisaOS.nrAmostra}">
</p:inputText>
<h:outputText value="Nº Grupo (1, 3, 7 ou 9) "/>
<p:inputText value="#{osb.pesquisaOS.grupo}">
</p:inputText>
<p:commandButton value="Pesquisar" update=":form1;" ajax="true" action="#{osb.pesquisaOS}">
</p:commandButton>
<p:growl>
</p:growl>
</p:panelGrid>
</h:form>
</p:panel>
<p:panel header="Resultado da pesquisa" style="font-size: 15px">
<h:form id="form2">
<p:dataTable var="pesquisaOS" value="#{osb.pesquisaOS}"
style="font-size: 13px">
<p:column headerText="Id">
<h:outputText value="#{pesquisaOS.id}" />
</p:column>
<p:column headerText="Nº O.S.">
<h:outputText value="#{pesquisaOS.nrOrdemServico}" />
</p:column>
<p:column headerText="Categoria">
<h:outputText value="#{pesquisaOS.categoria}" />
</p:column>
<p:column headerText="Serviço">
<h:outputText value="#{pesquisaOS.servico}" />
</p:column>
<p:column headerText="Nº Renavam">
<h:outputText value="#{pesquisaOS.nrRenavam}" />
</p:column>
<p:column headerText="Nº Orçamento">
<h:outputText value="#{pesquisaOS.nrOrcamento}" />
</p:column>
<p:column headerText="Nº Chave DANFE (NFE)">
<h:outputText value="#{pesquisaOS.nrChaveDanfe}" />
</p:column>
<p:column headerText="Data Início Serviço">
<h:outputText value="#{pesquisaOS.dataInicioServico}">
<f:convertDateTime type="date" dateStyle="short"
pattern="dd/MM/yyyy">
</f:convertDateTime>
</h:outputText>
</p:column>
<p:column headerText="Data Final Serviço">
<h:outputText value="#{pesquisaOS.dataFinalServico}">
<f:convertDateTime type="date" dateStyle="short"
pattern="dd/MM/yyyy">
</f:convertDateTime>
</h:outputText>
</p:column>
<p:column headerText="Código Ocorrência">
<h:outputText value="#{pesquisaOS.codOcorrencia}" />
</p:column>
<p:column headerText="Mecânico Executor">
<h:outputText value="#{pesquisaOS.usuarioExecutor}" />
</p:column>
<p:column headerText="Serviço Autorizado por">
<h:outputText value="#{pesquisaOS.usuarioAutorizador}" />
</p:column>
<p:column headerText="Valor Orçado R$">
<h:outputText value="#{pesquisaOS.valorPrevisto}">
<f:convertNumber pattern="#.##0,00" type="currency" locale="pt_BR" >
</f:convertNumber>
</h:outputText>
</p:column>
<p:column headerText="Valor Real R$">
<h:outputText value="#{pesquisaOS.valorEfetivo}" />
</p:column>
</p:dataTable>
</h:form>
</p:panel>
</h:body>
</html>
最后,错误堆栈:
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/carrotop] threw exception [/ct3/logado.xhtml @32,54 value="#{osb.pesquisaOS.nrAmostra}": Property 'pesquisaOS' not found on type br.com.agoraeuquero.carrotop.controle.ServicoBean] with root cause
javax.el.PropertyNotFoundException: Property 'pesquisaOS' not found on type br.com.agoraeuquero.carrotop.controle.ServicoBean
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:268)
at javax.el.BeanELResolver$BeanProperties.access0(BeanELResolver.java:221)
at javax.el.BeanELResolver.property(BeanELResolver.java:355)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:95)
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:169)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
at javax.faces.component.UIOutput.getValue(UIOutput.java:174)
at javax.faces.component.UIInput.getValue(UIInput.java:291)
at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:75)
at org.primefaces.component.inputtext.InputTextRenderer.encodeMarkup(InputTextRenderer.java:71)
at org.primefaces.component.inputtext.InputTextRenderer.encodeEnd(InputTextRenderer.java:52)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:89)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeBody(PanelGridRenderer.java:60)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:81)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:68)
at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:204)
at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:121)
at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:58)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
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:647)
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:502)
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:617)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
提前致谢!
ServicoBean class 有方法 getpesquisaOS() 和 getlistaNrsOS()。
应该是: getPesquisaOS() getListaNrsOS().