Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

ファイルごとにアイコンを変えてダウンロードさせる

はじめまして、とりあえず動くコードは書けても綺麗なコードが
書けないレベルの初心者です。


struts1.3で作った掲示板でリファクタリングの練習をしているのですが、
掲示板にアップロードされたファイル種類に合わせて、
表示するアイコンを変えて表示し、ファイルへのリンクを設置して
ダウンロードさせる場合はどのような作り方が良いのでしょうか?


現在は、

String型のfileTypeにxlsやxlsx等の文字列をlogic:iterateで回してファイル
の数だけ処理しています。


問題の表示部分ですが、

<logic:match name="fileType" type="java.lang.String" value="xls" >
<img src="img/icon_xls.jpg" width="40" height="35" alt="xls"><html:link 
page="filePath">添付ファイルをダウンロード</html:link>
 </logic:match>

として、xlsのアイコン1枚でxlsとxlsxへの対応はできたのですが、

この後pdf、ppt、doc・・・とlogic:matchをひたすら羅列してもよいのでしょ
うか?

2

回答

5131

閲覧

2件の回答

評価

10

Mapに対応表入れておいたら?

<%@ page import="java.util.*"%>
<%@ page isELIgnored="false" %>
<%-- Servlet2.3以前だとEL式は無効になってるので有効化 --%>

<%
  Map<String, String> extMap = new HashMap<String, String>();
  extMap.put("xls", "icon_xls.png");
  extMap.put("xlsx", "icon_xls.png");
  extMap.put("doc", "icon_doc.png");
  pageContext.setAttribute("extMap", extMap);
%>
  <logic:present name="extMap" property="${fileType}">
    <img src="img/${extMap[fileType]}"/>
  </logic:present>
  <logic:notPresent name="extMap" property="${fileType}">
    <img src="img/icon_default.png"/>
  </logic:notPresent>

例では直前にMapを作ってるけど、
Action側でDBとか設定ファイルから抽出しても良いし。


評価

0

xmlとかに設定ファイルを作っておいて、session保持という形に使用かと思い
ます。

ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。