[Struts]在jsp裡處理比較複雜的內容?

來源:互聯網
上載者:User

今天遇到一個問題,到現在也沒能比較圓滿的解決,是不是Struts在標籤庫上還不夠完善呢。比如有一個介面是顯示課件列表的,在最後一欄裡可以對資料進行操作,如下所示:

Code Name Author OP
10000001 風洞模型課件 劉金東 View Edit Delete
10000002 卡門渦階課件 季銘義 View Edit Delete
10000003 複變函數課件 秦江 View Edit Delete
10000004 聽力課件 郭長凱 View Edit Delete

現在希望當使用者按刪除時先彈出個確認框,提示“是否確認刪除風洞模型課件”,使用者可以選擇確認或取消。其中“是否確認刪除”是在資源檔裡定義的(prompt.confirm.delete=是否確認刪除{0}),“風洞模型課件”是課件的名稱,課件bean名為"ware"。如果寫成HTML,就是:

<a href="" onclick="return confirm('是否確認刪除風洞模型課件')">Delete</a>

但因為資訊都是動態,所以就有問題了。因為在<html:link>的onclick="..."裡,"<%"必須緊跟在第一個單引號後才能正確解析,即不能寫為onclick="return confirm('<%=str%>')"。所以,現在有兩種方法實現所需要的功能:

1、不用<html:link>,直接用HTML的<a>標記:

<bean:define id="toDel" name="ware" property="name" type="String"/>
<a href="delete.do?code=<bean:write name="ware" property="code"/>" 
    onclick="return confirm('<bean:message key="prompt.confirm.delete" bundle="root" arg0="<%=toDel%>"/>');">
    <bean:message key="course.list.op.delete"/>
</a>

2、使用<html:link>,事先定義一個只含一個參數的script函數,代碼如下:

<script language="JavaScript">
<!--
function confirmDelete(str){
    return confirm('<bean:message key="prompt.confirm.delete" bundle="root" arg0="'+str+'"/>');
  }
-->
</script>

然後在刪除連結的地方這樣寫:

<bean:define id="toDel" name="ware" property="name" type="String"/>
<html:link action="/delete" paramId="code" paramName="ware" paramProperty="code" onclick="<%="return confirmDelete('"+toDel+"');"%>">
    <bean:message key="course.list.op.delete"/>
</html:link>

這兩種方法都能達到目的,我暫時使用了第2種用法,畢竟在struts程式的jsp裡直接使用<a>標記有點彆扭。我看了一下struts文檔,能把資源中的{0}轉換為實際內容的標籤好象只有<bean:message>這一個,其實如果有辦法讓<bean:message>得到的內容放進某個bean裡就很好辦了,可惜……。

另外,沒研究過EL標籤庫,不知道會不會有協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.