Amigos, help me!!
Usando struts, vou precisar ter um actionform, mesmo que eu queira apenas listar informações na tela?
Entendi que o ActionForm serve pra pegar dados da tela, mas como nao vou pegar nenhum dado, nao precisaria dele…estou certo?
Outra: porque nao consigo mostrar no jsp as informações??
<display:table name="camps" id="campItem" defaultsort="1">
<display:column title="Nome" sortable="true" headerClass="sortable">
<%=((VoxVwCampaignSummaries)pageContext.getAttribute("campItem")).getCpaName()%>
</display:column>
</display:table>
Meu struts-config.xml:
<action input="/showCampaingSummaries.jsp"
name="ShowCampaingSummaries" path="/showCampaingSummaries"
scope="request"
type="com.voxblue.struts.action.ShowCampaingSummariesAction">
<forward name="success" path="/showCampaingSummaries.jsp" />
<forward name="failed" path="/login.jsp" />
</action>
E meu action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession s = request.getSession();
VoxTUser user = (VoxTUser) s.getAttribute("voxuser");
ShowCampaignSummariesActionForm cpa = (ShowCampaignSummariesActionForm) form;
VoxVwCampaignSummariesDAO dao = new VoxVwCampaignSummariesDAO();
List camps = dao.find(" from VoxVwCampaignSummaries where Cop = " + user.getCop() + " and CpaName like '%" + cpa.getCampName() + "%'");
request.setAttribute("camps", camps);
return mapping.findForward(SUCCESS);
}
Somebody help me!!! Please!!!
Abraço!!
Sim! Vc está certo!
Sobre o problema, acho que esta linha aqui está atrapalhando o seu código…
Tente usar as tags do Struts ou um JSTL para melhorar o seu código.
Se a página estiver estourando alguma exception nesse código vc poderá perder a descrição do erro…
Certo…
Bom, nao está estourando, mas nao mostra nada…e existem caras pra mostrar…
Qual tag vc me aconselha a usar no lugar dessa? Porque é atraves dessa linha que eu espero pegar e mostrar os registros…
Justamente… a exception deve estar acontecendo… veja no console do appserver para tirar a duvida…
Vc pode usar a tag do struts <bean:write… ou pode usar a do JSTL <c:out…
Sinta-se a vontade, lembrando que as tlds devem estar disponiveis!!!
Danger!!!
Coloquei em debbug, nem chega a entrar no execute do action…o que pode estar errado???
Xiii… ai enrolou o meio de campo!!!
Coloque o erro, a exception, e o que está contecendo antes…
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:495)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
root cause
java.lang.IllegalArgumentException: Cannot invoke com.voxblue.struts.AdministrationActionForm.setLogoImg - argument type mismatch
org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:1778)
org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:1759)
org.apache.commons.beanutils.PropertyUtilsBean.setNestedProperty(PropertyUtilsBean.java:1648)
org.apache.commons.beanutils.PropertyUtilsBean.setProperty(PropertyUtilsBean.java:1677)
org.apache.commons.beanutils.BeanUtilsBean.setProperty(BeanUtilsBean.java:1022)
org.apache.commons.beanutils.BeanUtilsBean.populate(BeanUtilsBean.java:811)
org.apache.commons.beanutils.BeanUtils.populate(BeanUtils.java:298)
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:493)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:816)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:203)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
ja forcei o campo setLogo , mas nem assim ele entra no action
Existe um atributo logoImg que está furando o seu form…
Coloque o código (sem os get/set) do seu AdministrationActionForm e o form que vc colocou no JSP para eu avaliar…
O que esta acontecendo, conforme explicito pelo StackTrace, é que existe um atributo logoImg que está dando problemas no momento da chamada do BanUtils. Com isso, ele dispara uma exception que o ActionServlet nem deixa chegar no seu Action.
Seguindo o que o rodrigoallemand falou, procure mesmo usar as tags do proprio struts !
fica mais facil até de vc entender o codigo !
<bean:write name="" ... />
So uma dica
Abs