Estes If`s para mostrar diferentes msg de erro é mto gambi?

Pessoal,
Tenho 3 possibilidades de MSG diferente …
Entao fiz estes if’s…
Mais nao sei pq to achando q é gambi … e nao sei se tem como eu fazer mais bunito …

    	<table cellspacing="0" border="0" cellpadding="0" class="topFramePadding">      	
      	<%if (form.getCountAgent() == 1) {%>	
      		<tr><td class="darkBleuFrameContent" style="padding-bottom:5px"><span class="labelWhiteBig">XXX<bean:message key='contacts.list.merge.text0'/></span></td></tr>	
      	<%} else if (form.getCountAgent() > 1) {%>	
      		<tr><td class="darkBleuFrameContent" style="padding-bottom:5px"><span class="labelWhiteBig">YYY<bean:message key='contacts.list.merge.text1'/></span></td></tr>	
      	<%} else {%>	
      	    <tr><td class="darkBleuFrameContent" style="padding-bottom:5px"><span class="labelWhiteBig">ZZZ<bean:message key='contacts.list.merge.text2'/></span></td></tr>	
      	<%} %>		

O que eu nao to gostando sao estes IF’s no meio da minha pagina JSP.

Obrigado!!!

Cara, tecnicamente Scriplet no jsp é mto zoado!

usa <c:choose> q ainda fica um poko mais bunito :slight_smile:

Bom,

você já pensou na possiblidade de criar um Servlet? Uma classe que estende HttpServlet faria essa lógica, você jogaria uma variável message no request, faria um forward pro jsp, e essa página apenas a exibiria. Toscamente, porque não compilei, seria assim:

void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws ServletException, IOException {
    
    Form form = null; // o que é form? daonde vêm? você sabe melhor do que eu.
    String keyMessage = null;
    if (form.getCountAgent() == 1)  {
        keyMessage = "contacts.list.merge.text0";
    } else if (form.getCountAgent() > 1) {
        keyMessage = "contacts.list.merge.text0";
    } else {
        keyMessage = "contacts.list.merge.text0";
    }
    req.setAttribute("keyMessage", keyMessage);
    req.getRequestDispatcher("sua-pagina.jsp").forward(req, resp);
}

Aí a sua página jsp seria bastante simplificada:

<jsp:useBean id="keyMessage" class="java.lang.String"/>

<table cellspacing="0" border="0" cellpadding="0" class="topFramePadding">          
    <tr><td class="darkBleuFrameContent" style="padding-bottom:5px"><span class="labelWhiteBig">ZZZ<fmt:message key='${keyMessage}'/></span></td></tr>

Lembre-se que bean:message não se usa mais. Aposto que a aplicação só usa as tags do Struts, mas não passa de um amontoado de jsp’s. Dê preferência a fmt:message.

É isso.

A lógica de mostrar uma mensagem de erro em uma view pode ser questionável, porém imagine que vc possa querer fazer MAIS do que mostrar uma mensagem de erro: não seria melhor decidir nas camadas mais internas de forma que a view tenha o minimo possivel para trabalhar?

Por exemplo, vc pode criar um teste via junit ou jbehave ou o que for de forma muito mais simples e perceber se a mensagem (ou outros comportamentos) estão corretos de forma muito mais simples do que esperar que UM jsp resolva isso.

a forma que eu gosto de decidir qual a mensagem de erro, é dicidir qual a mensagem que utilizarei nas camadas abaixo, botar a mensagem na sessão e ler da sessão via EL…

sim, scriplets pegam muuuuuuito mau… muito mesmo, e esta certo mesmo, não é nada bom especialmente para manutenção…