JSF, identificando TAG dentro de uma String armazenada no MYSQL

2 respostas
A

Boa Tarde Pessoal.

Estou desenvolvendo uma aplicação que gerencia modelos de contrato.

O meu problema começa assim, eu tenho o modelo de contrato armazenado no MYSQL, num campo LONGTEXT, quando mando o JSF mostrar o conteúdo no num <p:outPutLabel />, ele mostra normal, porém a TAG/Facelet ele não identifica, mostra como se fosse parte do Texto, o texo abaixo:

“Pelo presente instrumento particular de administração de imóveis, observados os preceitos elencados pela lei 8.245/91 e a adoção dos princípios elencados pela Teoria Geral dos Contratos, pactuam entre si de um lado, IMOBILIÁRIA, doravante simplesmente denominado ADMINISTRADORA, representada por seu corretor responsável, Sra. #{imobBB.empresa.repres}, residente e domiciliada à, portadora do CRECI sob o n°**#{imobBB.empresa.creci}; e do outro lado #{imobBB.cliente_id.nome}, portador da cédula de identidade RG n°#{imobBB.cliente_id.rg} e inscrito sob o CPF n°#{imobBB.cliente_id.cpf}**, doravante denominado simplesmente PROPRIETÁRIO que tem entre si justo e contratado o presente instrumento, os quais mutuamente aceitam, outorgam e assinam, a saber…”

Queria que ele substituísse os valores #{} pelos correspondentes armazenados, mas mostra como texto normal.

Alguma idéia?

2 Respostas

juliofsn

Isso não vai funcionar, as expressions não são avaliadas se estiverem dentro do valor de um componente. Nesse caso o melhor é vc usar um outputFormat e substituir essas expressions por parâmetros. https://docs.oracle.com/cd/E19798-01/821-1841/bnaru/index.html

A

Isso é possível, considerando que os seu MB #{imobBB} esteja com os valores preenchidos.
Crie em algum MB (pode ser no próprio ImoMB) o seguinte método:

public String getMensagemFormatada(){
        FacesContext context = FacesContext.getCurrentInstance();
        return context.getApplication().evaluateExpressionGet(context, texto, String.class);
  }

Considerando que a variavel “texto” será a sua mensagem “Pelo presente instrumento particular de administração de imóveis, observados os preceitos elencados pela lei 8.245/91 e a adoção dos…”

Na página basta fazer:

<h:outputText value="#{imobBB.mensagemFormatada}"/>

A outra solução seria usando o h:outputFormat (essa solução acho mais aconselhável), nesse caso você substituiria as expressões pelas posições e seu texto ficaria assim:

“Pelo presente instrumento particular de administração de imóveis, observados os preceitos elencados pela lei 8.245/91 e a adoção dos princípios elencados pela Teoria Geral dos Contratos, pactuam entre si de um lado, IMOBILIÁRIA, doravante simplesmente denominado ADMINISTRADORA, representada por seu corretor responsável, Sra. {0}, residente e domiciliada à, portadora do CRECI sob o n°**{1}; e do outro lado {2}, portador da cédula de identidade RG n° {3} e inscrito sob o CPF n°{4}**, doravante denominado simplesmente PROPRIETÁRIO que tem entre si justo e contratado o presente instrumento, os quais mutuamente aceitam, outorgam e assinam, a saber…”

E o h:outputFormat você deve passar os parametros conforme a posição de cada parametro:

<h:outputFormat value="#{imobBB.mensagem}">
            <f:param value="#{imobBB.empresa.repres}" />
            <f:param value="#{imobBB.empresa.creci}" />
            <f:param value="#{imobBB.cliente_id.nome}" />
            <f:param value="#{imobBB.cliente_id.rg}" />
            <f:param value="#{imobBB.cliente_id.cpf}" />
</h:outputFormat>
Criado 5 de janeiro de 2016
Ultima resposta 7 de jan. de 2016
Respostas 2
Participantes 3