Gostaria de saber como faço para um formulario externo à minha aplicação Struts preencha um form bean, tenho o formulario, um HTML simples, que não tem nada a ver com a aplicação, só vai chamar um Action dela, e enviar os dados… se tentar somente enviar o formulario o form chega nulo…
Como seria isso?
já tentou fazer que a action do <form> aponte pra sua Action sendo que os campos do <form> tenham o mesmo padrão de nomes do teu ActionForm?
sim, veja só como eu fiz…
struts-config.xml
<struts-config>
<form-beans>
<form-bean dynamic="false" name="acessoBean" type="com.vorttice.web.formbean.AcessoFb" />
</form-beans>
<action-mappings>
<action path="/listaacessos" type="com.vorttice.web.action.ActAcesso">
<forward name="listaacessos" path="/listaracessos.jsp"/>
</action>
<action path="/salvaracesso" type="com.vorttice.web.action.ActAcesso">
<forward name="ok" path="/ok.jsp" />
<forward name="erro" path="/erro.jsp" />
</action>
</action-mappings>
</struts-config>
o form bean
package com.vorttice.web.formbean;
import javax.servlet.http.*;
import javax.servlet.ServletException;
import org.apache.struts.action.*;
import org.apache.struts.Globals;
public class AcessoFb extends ActionForm{
private String origem;
public AcessoFb() {
}
public String getOrigem() {
return origem;
}
public void setOrigem(String origem) {
this.origem = origem;
}
public void reset(ActionMapping mapping, HttpServletRequest request){
origem = null;
}
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request){
ActionErrors erros = new ActionErrors();
return erros;
}
}
action, em salvar a unica coisa que coloquei foi pra verificar se o form é null se sim, vai pra pagina de erro, se não vai pra pagina de ok, e ele sempre vai pra pagina de erro… se eu tentar acessar o form da NullPointerException
public class ActAcesso extends Action{
private AcessoDAO adao = DAOFactoryHibernate.getInstance().makeAcessoDAO();
private final String LISTAR = "/listaacessos";
private final String SALVAR = "/salvaracesso";
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException{
ActionForward forward = null;
String path = mapping.getPath();
if(LISTAR.equals(path)){
try{
ArrayList acessos = adao.retrieveAll();
request.setAttribute("listaacessos", acessos);
}catch(Exception e){
throw new ServletException(e);
}
forward = mapping.findForward("listaacessos");
}
//aqui é que está o problema, o form sempre é null
if(SALVAR.equals(path)){
if(form!=null){
forward = mapping.findForward("ok");
}else{
forward = mapping.findForward("erro");
}
}
return forward;
}
}
o formulario de envio dos dados…
<html>
<body>
<form action="http://localhost:8080/vorttice/salvaracesso.do" method="post">
<input type="text" name="origem" />
<input type="submit" />
</form>
</body>
</html>
dei uma olhada por cima no teu post e logo no início quando vc delcara as actions no struts-config vc não as associa a nenhum FormBean declarado.
Sugiro que vc faça um dos tutoriais sobre struts disponíveis aki no portal pra dar uma revisada no básico do struts-config…
Voce esqueceu de adicionar o parametro name na sua action path :
Exemplo corrigido abaixo :
Este parametro deve ser igual ao name declarado no no seu caso acessoBean .