2016-06-21 15 views
0

カスタムタグを使用してフッターを作成しようとしています。私はこれに新しく、私はMyFooterTagクラスをより読みやすくしたいと思っています。 MyFooterTagクラスでは、ボディと属性を持たないものすべてにJspWriterを書き込みますが、読みやすいわけではありません。ボディコンテンツや属性を使用して最適化する方法はありますか?属性を持つJSPカスタムタグ

<footer class="container-fluid text-center"> 
 
    <p><fmt:message key="online_store.copyright.footer"></fmt:message></p> 
 
    <form class="form-inline"><fmt:message key="get_deals.footer"></fmt:message> 
 
    <input type="email" class="form-control" size="50" placeholder="Email Address"> 
 
    <button type="button" class="btn btn-danger"><fmt:message key="sign_up.footer"></fmt:message></button> 
 
    </form> 
 
</footer>

private final static String bootstrapFooterClass = "container-fluid text-center"; 
private final static String bootstrapFormClass = "form-inline"; 
private final static String bootstrapInputClass = "form-control"; 
private final static String bootstrapButtonClass = "btn btn-danger"; 

private final static String footerCopyrightKey = "online_store.copyright.footer"; 
private final static String getDealsFooterKey = "get_deals.footer"; 
private final static String singUpFooterKey = "sing_up.footer"; 


@Override 
public int doStartTag() throws JspException { 
    String footerStart = "<footer class='" + bootstrapFooterClass + "'>"; 
    String copyright = "<p><fmt:message key='" + footerCopyrightKey + "'></fmt:message>"; 
    String form = "<form class='" + bootstrapFormClass + "'><fmt:message key='" + getDealsFooterKey + "'></fmt:message>"; 
    String input = "<input type='email' class='" + bootstrapInputClass + "' size='50' placeholder='Email Address'>"; 
    String button = "<button type='button' class='" + bootstrapButtonClass + "'><fmt:message key='" + singUpFooterKey + "'></fmt:message></button>"; 

    try{ 
     JspWriter out = pageContext.getOut(); 
     out.write(footerStart); 
     out.newLine(); 
     out.write(copyright); 
     out.newLine(); 
     out.write(form); 
     out.newLine(); 
     out.write(input); 
     out.newLine(); 
     out.write(button); 
    }catch (IOException e){ 
     throw new JspException(e.toString()); 
    } 
    return SKIP_BODY; 
} 

@Override 
public int doEndTag() throws JspException { 
    String endTags = "</form></footer>"; 
    try { 
     pageContext.getOut().write(endTags); 
    } catch (IOException e) { 
     throw new JspTagException(e.toString()); 
    } 
    return EVAL_PAGE; 
} 
+0

ちょっと@Alexanderは私の答えをチェックしましたか? – PacMan

答えて

0

はいあなたはすべてのdoStartTagを使用せずにのみdoTagメソッドを使用するだけでSimpleTagSupportをクラスを使用してJSTLの新バージョンで、すべてそのコードを最適化することができます - のdoEndTagかのdoAfterBodyとout.newLine()を使用する代わりに、この例では新しい行に戻すたびに、println()の方法でテキストを作成し、同じ時間に戻る方法を示しています続行します:

public class myFooterTag extends SimpleTagSupport { 

public void doTag() throws JspException, IOException{ 
    JspWriter out = getJspContext().getOut(); //create a jspWriter object 
    out.println("<footer class='container-fluid text-center'>"); 
    out.println("<p><fmt:message key='online_store.copyright.footer'></fmt:message></p>"); 
    out.println("<form class='form-inline'><fmt:message key='get_deals.footer'></fmt:message>"); 
    out.println("<input type='email' class='form-control' size='50' placeholder='Email Address'>"); 
    out.println("<button type='button' class='btn btn-danger'><fmt:message key='sign_up.footer'></fmt:message></button>"); 
    out.println("</form>"); 
    out.println("</footer>"); 
} 
} 
関連する問題