3

私はJavaにかなり慣れていないので、これを間違って表現している場合は事前にお詫び申し上げます。JSP と HTML が混在しているため、複数の開始区切り記号と終了区切り記号を持つ小さなコード スニペットがあります。HTML がなくても、これはほんの数行のコードで実行できますが、HTML をレンダリングする必要があるため、コード行がほぼ 2 倍になります。非常に多くの開始区切り記号と終了区切り記号を使用するのではなく、これを行うためのより良い方法があるかどうか疑問に思っています。テンプレートライブラリを使用できることは知っていますが、それを避けようとしており、可能であればJSP内(別のクラスではありません)でこれを実行したいと考えています。助けてくれてありがとう!

<%
try {
  List<Page> children = properties.getPath("getChild", "");    
%>    
  <ul>       
<%      
  for (Page children : e) {
    if (children != null) {         
%>
   <li><a href="#">Show a link</a></li>
<%
   }//end if statement
  }//end for loop
%>
  <li><a href="<%= currentPage.getPath() %>" href="<%= currentPage.getPath() %>">Another link goes here</a></li>    
  </ul>
<% 
} catch (NullPointerException e){
%>
//show some content here
<% } %>
4

4 に答える 4

2

JSP にあるすべての Java コードの代わりに JSTL を使用します。ここでJSTLについて読むことができます - http://docs.oracle.com/javaee/5/tutorial/doc/bnakc.html

于 2013-04-15T01:37:02.517 に答える
2

この種の問題は、テンプレート ライブラリまたはフレームワークに含まれているビュー コンベンションを使用することで本当に解決できると思います。

これらのライブラリは、この種の問題を解決し、ビュー全体を整理するために作成されました。ビューの混乱を解消するだけでなく、MVC パターンにも準拠します。

たとえば、ストラットでは、次のようにします。

<s:textfield name="myParameter" /> 

この:

<html:link page="/linkoutput.jsp" paramId="id" paramName="name"/>

テンプレートまたはフレームワークを使用する必要があるその他の理由については、この質問を参照してください。デイブ・ニュートンが言ったように:

すべてを jsp で行おうとするのは、まったく間違ったアプローチです。

これで解決することを願っています。

于 2013-04-15T01:37:05.023 に答える
1
  1. NPE をキャッチするためだけに NPE をキャッチしないでください。

  2. JSTL の使用を検討してくださいhttp://jstl.java.net/getStarted.html 反復などのためのタグが豊富に用意されています。

于 2013-04-15T01:33:29.620 に答える
0

JSFのようなものを使用する方がはるかに優れています。これもJSPと同様にJava EEに含まれています。

于 2013-04-16T08:18:46.123 に答える