質問

標準Strutsタグライブラリを備えたJSPでStruts2を使用します。

ページのロードでDivを動的に非表示にしようとしていますが、それでもブラウザに送信します。これは、JavaScriptを介して後で表示できるようにするためです。

リクエストオブジェクト1と2は、JSP:usebeanタグを介して簡単に参照されません。 (それらは酵素であり、インスタンス化することはできません)s:if tagsまたはc:if tagsの組み合わせを使用してみましたが、醜く見えます。

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

そして、あなたの行動ではaを提供します isDivVisible() 「1」と「2」をパラメージで読む方法(httprequestからではありません!)

テンプレートテキストでプレーンエルを使用するだけです。

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

の使用 スクリプトレット 10年以上から落胆しています。それらはすべて、すべてのタグリブ(Struts2、JSTLなど)とELに置き換える必要があります。それが不可能なときはいつでも、コードロジックはほぼ確実に、モデルオブジェクト、サーブレット(またはstruts2アクション)などの実際のJavaクラスに属します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top