smorigo
Novembro 27, 2004, 9:02am
#1
Pessoal criei um <html:select> ele está exibindo os itens corretos, quando seleciono e mando para o Servlet o valor está indo o correto está persistindo e tudo mais certinho! Mas quando volto para a pagina quando quero editar o registro ele nao está posicionando no item correto, sempre permanece no primeiro da lista do combo…
<html:select property="parentesco" name="meuParceiro" >
<html:options collection="listaParentescos" property="codigoParentesco" labelProperty="descricaoParentesco"/>
</html:select>
Use assim:
<html:select property="parentesco" name="meuParceiro">
<html:optionsCollection name="listaParentescos" property="codigoParentesco" label="descricaoParentesco" value="descricaoParentesco"/>
</html:select>
smorigo
Novembro 28, 2004, 6:34pm
#3
Bom eu tentei usar esse codigo que voce me passo, mais eu estou tendo problema… e não to conseguindo achar o problema…
No meu Action eu estou mandando para pagina essa maneira:
ParceiroDAO parceiroDAO = ParceiroDAO.getInstance();
Parceiro parceiro = (Parceiro) parceiroDAO.procurar(Long.valueOf(request.getParameter("codigoParceiro")));
ServiceBroker broker = new ServiceBroker();
Collection parentescos = broker.listarTodosParentescos();
request.setAttribute("listaParentescos", parentescos);
request.setAttribute("meuParceiro", parceiro);
return mapping.findForward("success");
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: No getter method for property codigoParentesco of bean listaParentescos
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.pages.editarParceiro_jsp._jspService(editarParceiro_jsp.java:134)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
javax.servlet.jsp.JspException: No getter method for property codigoParentesco of bean listaParentescos
org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:1031)
org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:175)
org.apache.jsp.pages.editarParceiro_jsp._jspx_meth_html_optionsCollection_0(editarParceiro_jsp.java:469)
org.apache.jsp.pages.editarParceiro_jsp._jspx_meth_html_select_1(editarParceiro_jsp.java:440)
org.apache.jsp.pages.editarParceiro_jsp._jspx_meth_html_form_0(editarParceiro_jsp.java:226)
org.apache.jsp.pages.editarParceiro_jsp._jspService(editarParceiro_jsp.java:118)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056)
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:261)
org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:388)
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:316)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:231)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.27 logs.
Apache Tomcat/5.0.27
O seu bean não possui o método getCodigoParentesco().
smorigo
Novembro 28, 2004, 10:53pm
#5
Bem eu tenho meu JavaBean chamado “parceiros” que possui os métodos Get/Set para as duas colunas da tabela, nesse meu código abaixo eu mando para a pagina esse meu Collection que se eu nao estiver errado deve possuir uma coleção com com codigoParentesco e descricaoParentesco.
ServiceBroker broker = new ServiceBroker();
Collection parentescos = broker.listarTodosParentescos();
request.setAttribute("listaParentescos", parentescos);
ele reclama que o “listaParentescos” nao possui os metodos Get/Set como eu vo implementa isso nesse bean que ta sendo criado ali ? ou eu to viajando… rs…
valeu pela força!
Já sei o erro. Tenta aí:
<html:optionsCollection property="listaParentescos" label="codigoParentesco" />
smorigo
Novembro 30, 2004, 4:32pm
#7
Eae Daniel tudo blz, estou tendo o problema ainda… nao consegui resolver…
Essa é a tag q estou usando no JSP:
<html:select property="parentesco" name="meuParceiro" >
<html:optionsCollection property="listaParentescos" label="codigoParentesco" />
</html:select>
Meu JavaBean Parentesco:
package br.com.controle.parentesco.bean;
import java.io.Serializable;
public class Parentesco implements Serializable {
private Long codigoParentesco;
private String descricaoParentesco;
public Long getCodigoParentesco() {
return codigoParentesco;
}
public void setCodigoParentesco(Long codigoParentesco) {
this.codigoParentesco = codigoParentesco;
}
public String getDescricaoParentesco() {
return descricaoParentesco;
}
public void setDescricaoParentesco(String descricaoParentesco) {
this.descricaoParentesco = descricaoParentesco;
}
}
Meu JavaBean Parceiro:
package br.com.controle.parceiro.bean;
import java.io.Serializable;
import java.sql.Date;
import br.com.controle.parentesco.bean.Parentesco;
public class Parceiro implements Serializable {
private Long codigoParceiro;
private String nomeCompleto;
private String nomeReduzido;
private Date dataNascimento;
private Double valorSalario;
private String observacaoParceiro;
private Parentesco parentesco;
public Date getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Date dataNascimento) {
this.dataNascimento = dataNascimento;
}
public Double getValorSalario() {
return valorSalario;
}
public void setValorSalario(Double valorSalario) {
this.valorSalario = valorSalario;
}
public Long getCodigoParceiro() {
return codigoParceiro;
}
public void setCodigoParceiro(Long codigoParceiro) {
this.codigoParceiro = codigoParceiro;
}
public String getNomeCompleto() {
return nomeCompleto;
}
public void setNomeCompleto(String nomeCompleto) {
this.nomeCompleto = nomeCompleto;
}
public String getNomeReduzido() {
return nomeReduzido;
}
public void setNomeReduzido(String nomeReduzido) {
this.nomeReduzido = nomeReduzido;
}
public String getObservacaoParceiro() {
return observacaoParceiro;
}
public void setObservacaoParceiro(String observacaoParceiro) {
this.observacaoParceiro = observacaoParceiro;
}
public Parentesco getParentesco() {
return parentesco;
}
public void setParentesco(Parentesco parentesco) {
this.parentesco = parentesco;
}
}
Meu Action que chama a pagina:
package br.com.controle.parceiro.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import br.com.controle.parceiro.dao.ParceiroDAO;
import br.com.controle.parentesco.dao.ParentescoDAO;
import br.com.controle.parceiro.bean.Parceiro;
import br.com.controle.uteis.ServiceBroker;
import java.util.Collection;
public class ParceiroAction extends DispatchAction {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ParceiroDAO parceiroDAO = ParceiroDAO.getInstance();
Parceiro parceiro = (Parceiro) parceiroDAO.procurar(Long.valueOf(request.getParameter("codigoParceiro")));
Collection parentescos = ParentescoDAO.getInstance().listaTodos();
request.setAttribute("listaParentescos", parentescos);
request.setAttribute("meuParceiro", parceiro);
return mapping.findForward("success");
}
}
Estou usando o seguinte método para gerar o Collection
protected java.util.Collection listaTodos(Class classRef, Criterion[] criterions) throws DAOException {
try {
Session session = ConnectionFactory.getInstance().getSession();
Criteria crit = session.createCriteria(classRef);
if (criterions != null) {
for(int i=0; i < criterions.length; i++)
crit.add(criterions[i]);
}
java.util.Collection c = crit.list();
session.close();
return c;
}catch(HibernateException e) {
throw new DAOException(e);
}
Implemento minha Collection assim:
public java.util.Collection listaTodos() throws DAOException {
return listaTodos(Parentesco.class, null);
}
Tenta assim:
<html:select property="parentesco">
<html:optionsCollection name="listaParentescos" label="codigoParentesco" />
</html:select>
Deu, certo?
smorigo
Novembro 30, 2004, 4:47pm
#9
alterei e ele mudo o erro…
javax.servlet.ServletException: No getter method available for property value for bean under name br.com.controle.parentesco.bean.Parentesco@1439bd9
smorigo
Novembro 30, 2004, 4:50pm
#10
Bom eu adicionei a propriedade value e agora funciono nossa q luta em! valeu mesmo Daniel! passa a conta p/ eu depositar! rs…
Pode tirar uma duvida… esse Select nao precisa fazer parte do meu meuParceiro ? quando eu for dar um submit…
Você precisará ter o atributo “parentesco” no seu Form Bean.
smorigo
Dezembro 1, 2004, 12:05am
#12
bom funcino legal cara ele tá persistindo direito! mais oq eu mais queria nao ta rolando q era ele ficar com o item selected… ele ta carrengando e deixando o bendito item numero 1 como ativo sempre…
Meu código no final está assim:
<html:select property="parentesco" name="meuParceiro">
<html:optionsCollection name="listaParentescos" label="descricaoParentesco" value="codigoParentesco" />
</html:select>
O que deve estar acontecendo é que o valor selecionado não está chegando até à página.
escruz
Dezembro 1, 2004, 2:45pm
#14
como vc está usando isso
request.setAttribute(“listaParentescos”, parentescos);
e vc disse tb que ele está persistindo, (imaginei que em outra action ou outro metodo da action), talvez os valores realmente não estajam chegando na página…
Tenta faze assim :
session.setAttribute(“listaParentescos”, parentescos);
Mesmo ele populando corretamente os item e persistindo ainda pode ocorrer isso dele nao estar recebendo o valor correto ? pode me dar uma dica de oq pode estar ocorrendo…
valeuuuu
escruz
Dezembro 2, 2004, 3:53pm
#16
O que eu faço é setar os beans na sessão…
como no exemplo anteriormente enviado
Pois se vc usar com request, deverá recupera-lo e setar novamente em cada action que seu formulario passar ( inserção, select, e outros…)
pois os parametros do request chegam apenas à próxima action
smorigo
Dezembro 2, 2004, 8:37pm
#17
Eae eu fiz a alteração que você me falo olha só como fico meu Servlet:
package br.com.controle.parceiro.action;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.actions.DispatchAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import br.com.controle.parceiro.dao.ParceiroDAO;
import br.com.controle.parentesco.dao.ParentescoDAO;
import br.com.controle.parceiro.bean.Parceiro;
import java.util.Collection;
public class ParceiroAction extends DispatchAction {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
Parceiro parceiro = (Parceiro) ParceiroDAO.getInstance().procurar(Long.valueOf(request.getParameter("codigoParceiro")));
Collection parentescos = ParentescoDAO.getInstance().listaTodos();
session.setAttribute("meuParceiro", parceiro);
session.setAttribute("listaParentescos", parentescos);
return mapping.findForward("success");
}
}
Também alterei o Action que chama:
<action path="/editarParceiro"
type="br.com.controle.parceiro.action.ParceiroAction"
name="parceiroForm"
scope="session"
validate="false">
<forward name="success" path="/pages/editarParceiro.jsp" />
</action>
Na minha pagina JSP está declarado o selectOption da seguinte maneira:
<html:select property="parentesco" name="meuParceiro">
<html:optionsCollection name="listaParentescos" label="descricaoParentesco" value="codigoParentesco" />
</html:select>
Acompenhei a discussão neste topico mas não consegui resolver meu problema, se puder me ajudar. Eu tô tentando preencher um select com uma collection.
Meu erro:
No getter method available for property modelo for bean under name org.apache.struts.taglib.html.BEAN
Meu jsp:
<html:select property=“modelo”>
<html:options collection=“MODELO” property=“codModelo” labelProperty=“desModelo”/>
</html:select>
Minha classe:
DAOSisconapOraFacade dao = new DAOSisconapOraFacade();
Collection c = dao.selecionar(ModeloDAOOra.selecionarModeloPorFiltro, modeloVO);
request.getSession().setAttribute(“MODELO”, c);
Use assim:
<html:optionsCollection name="MODELO" property="codModelo" label="desModelo" value="desModelo" />
E não seria melhor colocar no Request do que no Session?
Daniel, grato pela sua atenção.
Fiz como você falou, mas o erro continua.
erro:
No getter method available for property modelo for bean under name org.apache.struts.taglib.html.BEAN