Gostaria de pegar a altura layoutUnit “center” e assim com essa altura poder setar a altura dos panels que eu vou colocar dentro dele
Tentei usar o seguinte javascript mas nao tive nenhum sucesso:
Você está tentando pegar por meio do id “panel2”, ok? Tem como você exibir a codificação do “panel2”?
Até!
renatakemi
Oi!
Eu tenho um index que utiliza o meu template e no meu index eu chamo a minha home.
Meu index:
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:a4j="http://richfaces.org/a4j"xmlns:rich="http://richfaces.org/rich"xmlns:p="http://primefaces.prime.com.tr/ui"><head><title>Title</title><metacontent='text/html; charset=ISO-8859-1'http-equiv='Content-Type'/><p:resources/></head><body><f:view><!-- Carrega o templante montado na outra pagina --><ui:compositiontemplate="template.xhtml"><!-- Carrega a parte CABECALHO do template --><ui:definename="header">
.
.
.
</ui:define><!-- Carrega a parte Lateral do template (tree)--><ui:definename="tree">
.
.
.
</ui:define><!-- Carrega a parte Central do template (conteudo)--><ui:definename="content"><a4j:includeviewId="#{url.url}"style="margin:0;padding:0;"/> ---------------------------------> Aqui eu chamo minha home.jsp
</ui:define><!-- Carrega a parte do RODAPE do template --><ui:definename="bottom"><ui:includesrc="pageFooter.jsp"/></ui:define></ui:composition></f:view></body></html>
Minha home:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:a4j="http://richfaces.org/a4j"xmlns:rich="http://richfaces.org/rich"xmlns:p="http://primefaces.prime.com.tr/ui"><head><title>Home</title><scripttype="text/javascript">varelemento=myLayout.getUnitByPosition("center");varaltura=elemento.get("altura");document.getElementById("panel2").style.height=(altura/2-16)+'px';</script></head><body><h:formid="formHome"><h:panelGridid="homeGrid"columns="2"width="100%"cellpadding="8px"><p:panelid="panel1"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 1"/></f:facet><ui:includesrc="/panel1.jsp"/></p:panel><p:panelwidgetVar="panel2"id="panel2"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 2"/></f:facet><a4j:includeviewId="panel2.jsp"/></p:panel><p:panelid="panel3"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 3"/></f:facet><ui:includesrc="panel3.jsp"/></p:panel><p:panelid="panel4"style="width:auto;max-width:680px;min-width:420px;overflow:auto;"><f:facetname="header"><h:outputTextvalue="Painel 4"/></f:facet><ui:includesrc="panel4.jsp"/></p:panel></h:panelGrid></h:form></body></html>
Já tentei colocar o script na pagina de template tb e nada…
alguma ideia?
Vlw!!!
guilhermehbueno
tenta colocar o seu form assim: <h:form prependId=“false”>
ou quando for se referir ao elemento panel2 coloque o id do form antes —> formHome:panel2
renatakemi
Oi Guilherme!
Obrigada por responder!
Eu coloquei o formHome: antes do id do panel: document.getElementById(“formHome:panel2”).style.height=“220px”;
e tentei tb colocando <h:form prependId=“false”> e document.getElementById(“panel2”).style.height=“220px”;
mas não adiantou…
barbon
Olá Renata,
Qual navegador você está utilizando? Caso seja o FF, observe o Ferramentas->Console de Erros (CTRL+SHIFT+J) e verifique se aparece o erro de JavaScript.
Uma tentativa seria evitar usar o mesmo nome para diferentes atributos, notei no seu código o id e o widgetVar com o mesmo nome. Já tive problemas em projetos faces por repetir nomes.
Até.
renatakemi
Oi Barbon!
Obrigada por responder! Valeu pela dica, vou mudar os nomes para evitar problemas.
Eu fui no console de erros do FF e lá fala que o myLayout não está definido e que o panel2 é null. :shock:
você sabe se javascript realmente altera componentes jsf?
Vlw!
barbon
Olá,
Javascript modificaria sim, pois independente da tecnologia (JSP, JSF… ASP.Net) a linguagem interpretada pelos navegadores é HTML, onde a mesma é manipulável via linguagem dinâmica.
Basta agora ajustar a referência ao componente e ajustar o Javascript.