سؤال

باستخدام Struts2 مع JSP مع مكتبات الدعامات القياسية.

أحاول إخفاء Div في تحميل الصفحة ديناميكيًا ، لكنني ما زلت أرسله إلى المتصفح. هذا حتى أتمكن من إظهاره لاحقًا عبر JavaScript.

لا يمكن الرجوع إلى كائنات الطلب الأولى والثاني من خلال علامة JSP: علامة useBean. (فهي تعداد ولا يمكن إنشاء مثيل لها) حاولت استخدام مجموعة من S: إذا كانت العلامات أو C: إذا كانت العلامات وتبدو قبيحة فقط.

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

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

أي اقتراحات لأفضل طريقة للقيام بذلك؟

هل كانت مفيدة؟

المحلول

باستخدام 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}">

نصائح أخرى

لاف ، يا رجل ، كان ذلك قبيحًا. اسمحوا لي أن ابتلع وأعطيك بديلاً ... ط ط ط ... على سبيل المثال ، يمكنك الكتابة:

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

أو أيضا

<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">">

ثم في عملك ، قدم أ isDivVisible() الطريقة التي تقرأ params "واحد" و "اثنين" (وليس من httprequest!)

فقط استخدم EL Plain in Template Text:

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

استخدام النصوص يتم تثبيته منذ أكثر من عقد. يجب استبدالها جميعًا بـ Taglibs (Struts2 و JSTL و ETC) و EL. كلما لم يكن ذلك ممكنًا ، فإن منطق الكود ينتمي بالتأكيد إلى فئة Java حقيقية ، مثل كائن النموذج ، Servlet (أو إجراء Struts2) ، إلخ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top