Problema com Ajax + JSF

4 respostas
X
Estou tentando usar AJAX agora mais está dando erro... Minha pagina está assim:
<h:panelGrid>
...
<h:outputLabel value="Diretor de turma:" for="ddt" />
					<h:selectOneRadio id="ddt"
						value="#{professorBean.professor.diretorDeTurma}">

						<f:selectItem itemLabel="Sim" itemValue="Sim" />
						<f:selectItem itemLabel="Nao" itemValue="Nao" />
						<a4j:support event="click" reRender="opcoes" />
					</h:selectOneRadio>
				</h:panelGrid>
				
				<h:panelGrid columns="2" id="opcoes">
					<h:outputLabel value="Turma:" for="responsavel" />
					<h:inputText id="responsa vel"
						value="#{professorBean.professor.turma}" />
				</h:panelGrid>

				
				<h:commandButton value="Cadastrar" action="#{professorBean.persist}" />
Erro:
13/01/2012 15:04:48 com.sun.facelets.FaceletViewHandler handleRenderException
GRAVE: Error Rendering View[/cadastroProfessor.jsp]
java.lang.IllegalArgumentException: responsa vel
	at javax.faces.component.UIComponentBase.validateId(UIComponentBase.java:555)
	at javax.faces.component.UIComponentBase.setId(UIComponentBase.java:351)
	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:172)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:360)
	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:360)
	at com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:190)
	at com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
	at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:136)
	at com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:337)
	at com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:307)
	at com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:109)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
	at com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
	at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
	at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
	at com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
	at com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:116)
	at com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
	at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:39)
	at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
	at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:526)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:569)
	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)

Alguem pode mi ajudar? Abrigado!

4 Respostas

wbdsjunior

o atributo id do elemento h:inputText tem “duas palavras”, o que não é permitido

&lt;h:inputText id="responsa vel" value="#{professorBean.professor.turma}" /&gt;
basta retirar o espaço

&lt;h:inputText id="responsavel" value="#{professorBean.professor.turma}" /&gt;

X
wbdsjunior:
o atributo id do elemento h:inputText tem "duas palavras", o que não é permitido
&lt;h:inputText id="responsa vel"
    value="#{professorBean.professor.turma}" /&gt;
basta retirar o espaço
&lt;h:inputText id="responsavel"
    value="#{professorBean.professor.turma}" /&gt;
Esse era um dos erros... Mais eu quero que
&lt;h:panelGrid columns="2" id="opcoes"&gt;
					&lt;h:outputLabel value="Turma:" for="responsavel" /&gt;
					&lt;h:inputText id="responsavel"
						value="#{professorBean.professor.turma}" /&gt;
				&lt;/h:panelGrid&gt;
Só apareça se no
&lt;h:outputLabel value="Diretor de turma:" for="ddt" /&gt;
					&lt;h:selectOneRadio id="ddt"
						value="#{professorBean.professor.diretorDeTurma}"&gt;

						&lt;f:selectItem itemLabel="Sim" itemValue="Sim" /&gt;
						&lt;f:selectItem itemLabel="Nao" itemValue="Nao" /&gt;
						&lt;a4j:support event="click" reRender="opcoes" /&gt;
					&lt;/h:selectOneRadio&gt;
for selecionado SIM e do jeito que está aparece de qualquer jeito... Obrigado!!!
wbdsjunior

tente:

... &lt;h:panelGrid columns="2" id="opcoes" rendered="#{professorBean.professor.diretorDeTurma eq 'Sim'}"&gt; &lt;!-- ou == 'Sim' --&gt; ...

X

wbdsjunior:
tente:

... &lt;h:panelGrid columns="2" id="opcoes" rendered="#{professorBean.professor.diretorDeTurma eq 'Sim'}"&gt; &lt;!-- ou == 'Sim' --&gt; ...

Testei…
O campo sumiu, mais ele não aparece quando eu clico no SIM …

Criado 13 de janeiro de 2012
Ultima resposta 13 de jan. de 2012
Respostas 4
Participantes 2