[RESOLVIDO] Mudança do índice da TabView

6 respostas
V

Olá! Sou iniciante em JSF e PrimeFaces e estou encontrando um problema utilizando TabView. Meu propósito é clicar em um botão e mudar o activeIndex da TabView, mas ao rodar a aplicação aparece um erro.

xhtml

<h:body>
    	<p:tabView id="Tab" activeIndex="#{cadempBean.tab}">
    		<p:tab title="Pesquisar" id="tPesquisar">
    			<h:form prependId="false">
			        <p:panel>
						<h:panelGrid columns="4" rows="2" width="100%">
							<h:outputText value="Conteúdo" />
							<h:outputText value="Ordem" />
							<p:spacer></p:spacer>
							<p:spacer></p:spacer>
							<p:inputText value="#{cadempBean.conteudo}" size="100"/>
							<p:selectOneMenu value="#{cadempBean.ordem}" style="width:100px;" >
								<f:selectItem itemValue="empnom" itemLabel="Nome" /> 
								<f:selectItem itemValue="empfan" itemLabel="Fantasia" /> 
								<f:selectItem itemValue="empmun" itemLabel="Cidade" /> 
								<f:selectItem itemValue="empest" itemLabel="Estado" /> 
							</p:selectOneMenu>
							<p:commandButton value="Buscar" action="#{cadempBean.gerarLista}" update="listaEmpresas" image="buscar"/>
						</h:panelGrid>
					</p:panel>
					<br/>
					<p:panel>
						<p:dataTable widgetVar="listaEmpresas" id="listaEmpresas" var="empresa" value="#{cadempBean.lista}" rows="10" paginator="true" selection="#{cadempBean.cademp}" selectionMode="single" emptyMessage="Nenhum Registro Encontrado!" >
							<f:facet name="header">  
		            			Empresas  
		        			</f:facet>
							<p:column>
								<f:facet name="header">  
									<h:outputText value="Código" />  
								</f:facet>  
								<h:outputText value="#{empresa.empcod}" />
							</p:column>
							<p:column>
							   	<f:facet name="header">  
								    <h:outputText value="Nome" />  
								</f:facet>  
								<h:outputText value="#{empresa.empnom}" />
							</p:column>
							<p:column>
							  	<f:facet name="header">  
								    <h:outputText value="Cidade" />  
								</f:facet>  
								<h:outputText value="#{empresa.empmun}" />
							</p:column>
							<p:column>
							   	<f:facet name="header">  
								    <h:outputText value="Estado" />  
								</f:facet>  
							    <h:outputText value="#{empresa.empest}" />
							</p:column>
		        			<f:facet name="footer">  
								<p:commandButton image="novo" value="Novo Registro" actionListener="#{cadempBean.tabIndex}" update="Tab"/>
							</f:facet> 
						</p:dataTable>
					</p:panel>
				</h:form>	
    		</p:tab>
    		<p:tab title="Manipulação" id="tManipular">
    			
    		</p:tab>
    	</p:tabView>
    </h:body>
bean
public class CadEmpBean {
	
	private CadEmp cademp;
	private List<CadEmp> lista;
	private String conteudo;
	private String ordem;
	private String tab = "0";
	
	public CadEmp getCademp() {
		return this.cademp;
	}
	
	public void setCademp(CadEmp cademp) {
		this.cademp = cademp;
	}
	
	public String getConteudo() {
		return conteudo;
	}

	public void setConteudo(String conteudo) {
		this.conteudo = conteudo;
	}

	public String getOrdem() {
		return ordem;
	}

	public void setOrdem(String ordem) {
		this.ordem = ordem;
	}

	public List<CadEmp> getLista() {
		return lista;
	}

	public void setLista(List<CadEmp> lista) {
		this.lista = lista;
	}
	
	public void gerarLista() {
		CadEmpRENG cadempRN = new CadEmpRENG();
		this.lista = cadempRN.pesquisarEmpresa(this.ordem, this.conteudo);
	}
	
	public String getTab() {
		return tab;
	}

	public void setTab(String tab) {
		this.tab = tab;
	}
public void tabIndex(){
		if (this.tab.equals("0"))
			this.tab = "1";
		else
			this.tab = "0";
	}
}
E o erro é
javax.el.PropertyNotFoundException: /index.xhtml @50,58 activeIndex="#{cadempBean.tab}": Property 'tab' not found on type br.com.samospru.controle.CadEmpBean
	at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111)
	at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	at org.primefaces.component.tabview.TabView.getActiveIndex(TabView.java:99)
	at org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(TabViewRenderer.java:108)
	at org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabViewRenderer.java:61)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)

Obrigaada!

6 Respostas

E

Qual o escopo do seu bean ? ViewScoped ?
Recomendo usar int em vez de String tab.

V

O escopo do bean é Session… precisa ser ViewScoped? Qual é a diferença?..
Coloquei o tab valendo int e deu o mesmo erro =(

E

Escopo Request: é o menor tempo de vida. Os Managed Beans desse escopo vivem apenas o tempo que a sua requisição levar para ser processada. Quando você envia dados por um formulário, eles chegam na aplicação através de um Managed Bean, quando ele terminar de ser processado, esse objeto deixará de ser visível para a aplicação.

Escopo Viewscope: Um managed bean com esse escopo permanece na memória enquanto submetemos para a mesma tela.

Escopo Session: Quando um usuário acessar o sistema web, ele estabelece com o servidor uma sessão. Os Managed Beans marcados como session existem desde o instante inicial, quando o usuário acessa a aplicação, até que essa expire por inatividade, seja voluntariamente finalizada pela aplicação.

V

Obrigada edudebom!
Mas o erro ainda é o mesmo…

V

Bom… não achei saída para esse erro então usei div’s e css para criar minhas abas… porém agora surgiu um novo erro… quero desabilitar um botão do meu formulário usando um atributo do bean, achei vários exemplos da net… mas quando implemento não tenho sucesso.

O meu botão está da seguinte maneira:

<p:commandButton image="voltar" value="Voltar" actionListener="#{cadEmpBean.novaEmpresa}" disabled="#{cadEmpBean.statusBotao}"/>

E o atributo do meu bean…

private boolean statusBotao = true;
	
	public boolean getStatusBotao() {
		return statusBotao;
	}

	public void setStatusBotao(boolean statusBotao) {
		this.statusBotao = statusBotao;
	}
V

Achei a solução de todoooos os meus problemas: estava usando o PrimeFaces 3.0 , mudei para o 2.2.1 e todos os problemas acabaram! :smiley:

Criado 16 de junho de 2011
Ultima resposta 21 de jun. de 2011
Respostas 6
Participantes 2