Domanda

Uso Struts2 con jsp con puntoni standard di librerie di tag.

Sto cercando di nascondere in modo dinamico un DIV al caricamento della pagina, ma comunque inviare al browser. Si tratta di modo che io possa mostrare in un secondo momento tramite JavaScript.

La richiesta oggetti uno e due non sono facilmente riferimento tramite un tag jsp: useBean. (Sono enumerazioni e non possono essere istanziati) Ho provato ad utilizzare una combinazione di s: se i tag o c. Se tag e sembra proprio brutto

<%
    String displayStr = "display: none;";
    if(request.getAttribute("one") != null || request.getAttribute("two") != null  ) {
        displayStr = "display: block;";
    }
 %>

<div id="next" style="<%=displayStr %>">

Qualche suggerimento per un modo migliore per fare questo?

È stato utile?

Soluzione

Utilizzando JSTL:

   <c:set var="displayStr" value="display:none"/>
   <c:if test="${!empty one || !empty two}">
        <c:set var="displayStr" value="display:block"/>
   </c:if>
   <div id="next" style="${displayStr}">

Altri suggerimenti

Ugh, l'uomo, che era brutto. Mi permetta di deglutire, e vi darà un'alternativa ... Mmm ... per esempio, si potrebbe scrivere:

<div id="next" 
  style="display:<s:if test="divVisible">block</s:if><s:else>none</s:else>">

o anche

<s:if test="divVisible">
  <s:set name="divStyle" value="%{'display:block'}"/>
</s:if>
<s:else>
  <s:set name="divStyle" value="%{'display:none'}"/>
</s:else>

<div id="next" style="<s: property value="#divStyle">">

E poi nella vostra azione di fornire un metodo isDivVisible() che leggono i params "uno" e "due" (non dal httpRequest!)

Basta usare plain EL nel testo del modello:

<div id="next" style="display: ${(!empty one || !empty two) ? 'block' : 'none'}">

L'utilizzo di scriptlet è scoraggiato da oltre un decennio. Dovrebbero essere tutti sostituiti da taglibs (Struts2, JSTL, ecc) e EL. Ogni volta che non è possibile, allora la logica del codice appartiene quasi certamente in una vera e propria classe Java, come un oggetto del modello, un servlet (o un'azione Struts2), ecc.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top