[Resolvido]Tela não abre quando coloco tag <html:form .... >

17 respostas
eve_bsi
Olá pessoal Seguinte, estou fazendo uma tela de cadastro básico, tenho outras telas as quais peguei de exemplos, pois são bem parecidas... Porém nessa tela que estou fazendo a hora que coloco a tag <html:form ... > a página não abre, agora se deixo sem a págnina abre, porém não funciona pois não tenho o action="". Vou postar o código aqui, se alguém puder me auxiliar... vlw
&lt;%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %&gt;
&lt;%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %&gt;
&lt;%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %&gt;
&lt;%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %&gt;
&lt;%@ taglib uri="/WEB-INF/displaytag-11.tld" prefix="display"%&gt;

&lt;c:if test="${sessionScope.ACESSO != 'ADMINISTRADOR'}"&gt;
	&lt;script language="javascript"&gt;
		window.location="${local}/jsp/erro.login.jsp";
	&lt;/script&gt;	
&lt;/c:if&gt;

&lt;html:html&gt;

&lt;script language="javascript"&gt;

	function acao(acao, codigo)
	{
		document.intervaloManutencaoForm.codigo.value=codigo;
		document.intervaloManutencaoForm.metodo.value=acao;
		document.intervaloManutencaoForm.descricao.value="";
		if(acao=='excluir')
		{
			msg="Deseja excluir este registo?";
			if(window.confirm(msg))
			{
				document.intervaloManutencaoForm.submit();
			}
		}else{
			document.intervaloManutencaoForm.submit();
		}
	}

&lt;/script&gt;

&lt;html:javascript formName="intervaloManutencaoForm"/&gt;
&lt;html:messages id="erro" message="true"&gt;
	&lt;script type="text/javascript"&gt;
		alert("&lt;bean:write name="erro"/&gt;");
	&lt;/script&gt;
&lt;/html:messages&gt;

&lt;body&gt;
	&lt;table cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
		&lt;tbody&gt;
			&lt;tr&gt;
				&lt;td class="lmenu" id="global" rowspan="2"&gt;
					&lt;div class="leftnavwidth"&gt;&lt;/div&gt;								
				&lt;/td&gt;
				&lt;td class="topgutter" width="100%"&gt;
					&lt;div class="banner"&gt;
						&lt;table cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
							&lt;tbody&gt;
								&lt;tr&gt;
									&lt;td class="bannerDivider"&gt;<img src="http://www.pesa.com.br/helpdesk/y_triangle.gif" ></img>&lt;/td&gt;
									&lt;td class="banner"&gt;
										&lt;div&gt;&lt;bean:message key="label.titulo.cadastrar.intervaloManutencao" /&gt;&lt;/div&gt;
									&lt;/td&gt;
									&lt;td valign="bottom"&gt;<img src="http://www.pesa.com.br/helpdesk/corner.gif" ></img>&lt;/td&gt;
								&lt;/tr&gt;
							&lt;/tbody&gt;
						&lt;/table&gt;
					&lt;/div&gt;	
				&lt;/td&gt;
			&lt;/tr&gt;
		&lt;/tbody&gt;
	&lt;/table&gt;
	<p></p>
	&lt;html:form action="/intervaloManutencao" focus="descricao" onsubmit="return validateIntervaloManutencaoForm(this);"&gt;
		&lt;html:hidden property="codigo" value="0" /&gt;
			&lt;html:hidden property="metodo" value="gravar" /&gt;
			&lt;table border="0" class="externa" width="50%"&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;div class="titulo"&gt;&lt;bean:message key="label.titulo.cadastrar.intervaloManutencao" /&gt;&lt;/div&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td&gt;
						&lt;table class="interna" width="100%"&gt;
							&lt;tr&gt;
								&lt;td class="linha" width="10%"&gt;&lt;bean:message key="label.descritivo" /&gt;
								&lt;/td&gt;
								&lt;td width="90%"&gt;
									&lt;html:text property="descricao" size="50" value="" /&gt;
										&lt;bean:message key="label.Irequerido"/&gt; 
								&lt;/td&gt;
							&lt;/tr&gt;
						&lt;/table&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
				&lt;tr&gt;
					&lt;td colspan="2"&gt;
						&lt;center&gt;
							&lt;html:submit value="gravar" styleClass="submit" /&gt;
						&lt;/center&gt;
					&lt;/td&gt;
				&lt;/tr&gt;
			&lt;/table&gt;
			&lt;bean:message key="label.Irequerido" /&gt;
	&lt;/html:form&gt;
	<p></p>
	&lt;logic:present name="tabela" scope="request"&gt;
		&lt;display:table name="tabela" id="tabela" scope="request"
			requestURI="${local}/intervaloManutencao.do?metodo=consultar" excludedParams="codigo" defaultsort="1"&gt;
			&lt;display:column title="Código" property="codigo" sortable="true" /&gt;
			&lt;display:column title="Descritivo" property="descricao" sortable="true"/&gt;
			&lt;display:column title="Ação"&gt;
				<a
					${tabela.codigo}"/>')&quot;&gt;
					&lt;bean:message key="label.link.excluir" /&gt;	
				</a>
				<a 
					${tabela.codigo}"/>')&quot;&gt;
					&lt;bean:message key="label.link.alterar" /&gt;
				</a>
			&lt;/display:column&gt;	
		&lt;/display:table&gt;
	&lt;/logic:present&gt;
	<p></p>
&lt;/body&gt;
&lt;/html:html&gt;

Só lembrando que é se eu colocar a tag html:form, se caso naõ colocar a página abre...
:wink:

17 Respostas

vinicius.martinez

Troque:

<html:javascript formName="intervaloManutencaoForm"/>

Por

<html:form name="intervaloManutencaoForm"/>

Dica: quando voce tiver problemas de “renderização”, olhe o html gerado…

=)

eve_bsi

vinicius.martinez:
Troque:

<html:javascript formName="intervaloManutencaoForm"/>

Por

<html:form name="intervaloManutencaoForm"/>

Mas daí tiro aquele

<html:javascript formName="intervaloManutencaoForm"/>

do começo do código?

vinicius.martinez

Tenta ai…

eve_bsi

vinicius.martinez:
Tenta ai…

Não dá certo não.
na tag html:form não tem Name=""
ai não rola!

vinicius.martinez
<html:form action="intervaloManutencaoForm"/>

Troca por isso e ve o html gerado…

Se tiver alguma dúvida sobre a tag:


http://struts.apache.org/1.3.10/struts-taglib/tagreference.html#struts-html.tld

PS>: eee UNESP hein!!!

eve_bsi

vinicius.martinez:
<html:form action="intervaloManutencaoForm"/>
Troca por isso e ve o html gerado…

Não da certo não… o código gerado não tem nada dessa parte do código, pq ao clicar no link a tela não está abrindo.

:?: Não entendi :?:

vinicius.martinez

A tela não abre … ? fica em branco … ?

Tenta ver o source…

<html:form action="/nomedaActionquevocequerchamar"/>
<form name="intervaloManutencaoForm">
<html:messages id="erro" message="true">  
<script type="text/javascript">  
 alert("<bean:write name="erro"/>");  
</script>  
</html:messages>
eve_bsi
vinicius.martinez:
A tela não abre .. ? fica em branco .. ? Tenta ver o source...
<html:form action="/nomedaActionquevocequerchamar"/>
só se tiver alguma coisa mapeada errada então...
<!--#### INTERVALO DE MANUTENÇÃO ==-->
 	<action
 		attribute="intervaloManutencaoForm"
 		name="intervaloManutencaoForm"
 		parameter="metodo"
 		path="/intervaloManutencao"
 		scope="request"
 		type="rsc.action.IntervaloManutencaoAction">
 		
 			<forward name="cadastrar" path="page.intervaloManutencao.cadastrar" />
 			<forward name="alterar" path="page.intervaloManutencao.alterar" /> 		
 	</action>
vinicius.martinez

Depois das alterações que eu falei pra voce fazer mudou algo.. ?

Eu nunca vi mapeado assim os jsp's..usando "." ao invés de "/"

<forward name="cadastrar" path="page.intervaloManutencao.cadastrar" />
<forward name="alterar" path="page.intervaloManutencao.alterar" /> 		
</action>

Isso ai em cima funciona ? em algum outro local do sistema está mapeado assim .. ?

Senão...ve direitinho onde seus jsp's estão e use "/"

[code]
<forward name="cadastrar" path="page/intervaloManutencao/cadastrar" />
<forward name="alterar" path="page/intervaloManutencao/alterar" /> 		
</action>
[/code]
eve_bsi
vinicius.martinez:
Depois das alterações que eu falei pra voce fazer mudou algo.. ?
Não mudou nda. continua do mesmo jeito
Eu nunca vi mapeado assim os jsp's..usando "." ao invés de "/"
<forward name="cadastrar" path="page.intervaloManutencao.cadastrar" />
<forward name="alterar" path="page.intervaloManutencao.alterar" /> 		
</action>
Isso ai em cima funciona ? em algum outro local do sistema está mapeado assim .. ? Senão...ve direitinho onde seus jsp's estão e use "/"
[code]
<forward name="cadastrar" path="page/intervaloManutencao/cadastrar" />
<forward name="alterar" path="page/intervaloManutencao/alterar" /> 		
</action>

Todos estão mapeado assim! e funcionam normal.

vinicius.martinez

Post seu jsp denovo por favor e o que exatamente voce quer fazer

eve_bsi
vinicius.martinez:
Post seu jsp denovo por favor e o que exatamente voce quer fazer
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="/WEB-INF/displaytag-11.tld" prefix="display"%>

<c:if test="${sessionScope.ACESSO != 'ADMINISTRADOR'}">
	<script language="javascript">
		window.location="${local}/jsp/erro.login.jsp";
	</script>	
</c:if>

<html:html>

<script language="javascript">

	function acao(acao, codigo)
	{
		document.intervaloManutencaoForm.codigo.value=codigo;
		document.intervaloManutencaoForm.metodo.value=acao;
		document.intervaloManutencaoForm.descricao.value="";
		if(acao=='excluir')
		{
			msg="Deseja excluir este registo?";
			if(window.confirm(msg))
			{
				document.intervaloManutencaoForm.submit();
			}
		}
		else
		{
			document.intervaloManutencaoForm.submit();
		}
	}

</script>

<html:javascript formName="intervaloManutencaoForm"/>

<html:messages id="erro" message="true">
	<script type="text/javascript">
		alert("<bean:write name="erro"/>");
	</script>
</html:messages>

<body>
	<table cellspacing="0" cellpadding="0" width="100%" border="0">
		<tbody>
			<tr>
				<td class="lmenu" id="global" rowspan="2">
					<div class="leftnavwidth"></div>								
				</td>
				<td class="topgutter" width="100%">
					<div class="banner">
						<table cellspacing="0" cellpadding="0" width="100%" border="0">
							<tbody>
								<tr>
									<td class="bannerDivider"><img src="http://www.pesa.com.br/helpdesk/y_triangle.gif" alt=""></td>
									<td class="banner">
										<div><bean:message key="label.titulo.cadastrar.intervaloManutencao" /></div>
									</td>
									<td valign="bottom"><img src="http://www.pesa.com.br/helpdesk/corner.gif" alt=""></td>
								</tr>
							</tbody>
						</table>
					</div>	
				</td>
			</tr>
		</tbody>
	</table>
	<p></p>
<html:form action="/intervaloManutencao" focus="descricao" onsubmit="return validateIntervaloManutencaoForm(this);">
	
	<html:hidden property="codigo" value="0" />
	
		
		<html:hidden property="metodo" value="gravar" />
		
			<table border="0" class="externa" width="50%">
				<tr>
					<td>
						<div class="titulo"><bean:message key="label.titulo.cadastrar.intervaloManutencao" /></div>
					</td>
				</tr>
				
				<tr>
					<td>
						<table class="interna" width="100%">
							<tr>
								<td class="linha" width="10%"><bean:message key="label.descritivo" />
								</td>
								<td width="90%">
									<html:text property="descricao" size="50" value="" />
										<bean:message key="label.Irequerido"/> 
								</td>
							</tr>
						</table>
					</td>
				</tr>
				<tr>
					<td colspan="2">
						<center>
							<html:submit value="gravar" styleClass="submit" />
						</center>
					</td>
				</tr>
			</table>
				<bean:message key="label.requerido" />
</html:form>								
	<p></p>
	<logic:present name="tabela" scope="request">
		<display:table name="tabela" id="tabela" scope="request"
			requestURI="${local}/intervaloManutencao.do?metodo=consultar" excludedParams="codigo" defaultsort="1">
			<display:column title="Código" property="codigo" sortable="true" />
			<display:column title="Descritivo" property="descricao" sortable="true"/>
			<display:column title="Ação">
				<a
					href="javascript:acao('excluir','<c:out value="${tabela.codigo}"/>')">
					<bean:message key="label.link.excluir" />	
				</a>
				<a 
					href="javascript:acao('alterar','<c:out value="${tabela.codigo}"/>')">
					<bean:message key="label.link.alterar" />
				</a>
			</display:column>	
		</display:table>
	</logic:present>
	<p></p>		
	</form>		
</body>
</html:html>
Essa tela é uma tela de cadastro. onde o usuário coloca apenas a descrição. Existe uma tabela onde tem o campo descrição e o botão gravar (é pra essa tabela que preciso do html: form, por conta da action) Logo em baixo dessa tabela, existe outra tabela, que lista os itens existentes no banco... Quando nao coloco a tag
<html:form action="/intervaloManutencao" focus="descricao" onsubmit="return validateIntervaloManutencaoForm(this);">
a página abre, mostrando essas tabelas, a com o campo descrição e botão gravar, e a tabela com a lista de todos registros existentes. O problema é se coloco a tag (citada acima) essas tabelas não são mostradas. não aparecem. e não consigo resolver, eu tenho uma outra jsp, igual a essa que estou tentando fazer, e que funciona perfeitamente, e eu fiz IGUAL, só mudei o objeto, porem os campos sao os mesmos. Agora essa que estou fazerndo não funciona de jeito maneira.
eve_bsi

Fiz um teste aqui.
Se ao invés de eu colocar <html:form action+"">, e colocar, <form action="">.
A tela abre, porém qdo clico no botão gravar, não acha a action, pq to usando struts, e a action ta mapeada como struts.

:?

vinicius.martinez

Pra achar voce tem que colocar com o nome da action.do

Ex>

<form action="minhaAction.do">

testa isso…e ve o html gerado…e cola aqui

eve_bsi

vinicius.martinez:
Pra achar voce tem que colocar com o nome da action.do

Ex>

<form action="minhaAction.do">

testa isso…e ve o html gerado…e cola aqui

A principio parece q foi… vou fazer mais um testes… a
gora deu outro erro, mas dai é no BD…
Vlw

eve_bsi

Uhm, não é no banco não… é que o campo ta vindo nulo
Debuguei aqui, e vi q o o form ta null, acho q tem a ver com o action :?

Método que recebe um formulário do tipo form.IntervaloManutencaoForm e transforma-o em model.IntervaloManutencao

private IntervaloManutencao populaModel(ActionForm form){ //cria novo objeto IntervaloManutencao intervaloManutencao = new IntervaloManutencao(); try{ BeanUtils.copyProperties(intervaloManutencao, form); }catch(Exception e){ System.out.println(e); } return intervaloManutencao; }
Nesse metodo o form ta null, ai nunca q vai funcionar… o q devo fazer aqui?

eve_bsi

vinicius.martinez:
Pra achar voce tem que colocar com o nome da action.do

Ex>

<form action="minhaAction.do">

testa isso…e ve o html gerado…e cola aqui

Não deu muito certo não…
Agora a tela aparece, mas o form vem null
ai nao consigo pegar os dados da tela, quando clico no gravar… =/
Qdo clico em gravar vem pra esse metodo aqui… e o form vem null!

public ActionForward gravar(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { IntervaloManutencaoDAO dao = recuperaDao(request); IntervaloManutencao intervaloManutencao = populaModel(form); //caso o select retorne false if(!dao.inserir(intervaloManutencao)) { //cria a mensagem de erro ActionMessages mensagem = new ActionMessages(); //add o texto do properties mensagem.add("erro", new ActionMessage("erro.gravar")); //salva a mensagem para ser vista na tela saveMessages(request, mensagem); } dao.fecharConexao(); return consultar(mapping, new IntervaloManutencaoForm(), request, response); }

Alguém ajuda?

Criado 25 de março de 2010
Ultima resposta 25 de mar. de 2010
Respostas 17
Participantes 2