锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<init-param>
<param-name>NoCache</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>ContentType</param-name>
<param-value>text/html</param-value>
</init-param>
<!-- FreeMarker settings: -->
<init-param>
<param-name>template_update_delay</param-name>
<param-value>0</param-value> <!-- 0 is for development only! Use higher value otherwise. -->
</init-param>
<init-param>
<param-name>default_encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>locale</param-name>
<param-value>zh_CN</param-value>
</init-param>
<init-param>
<param-name>number_format</param-name>
<param-value>0.##########</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
]]>
DisplayTag鏄竴涓潪甯稿ソ鐢ㄧ殑琛ㄦ牸鏄劇ず鏍囩錛岄傚悎MVC妯″紡錛屽叾涓婚〉鍦?a >http://displaytag.sourceforge.net
涓銆佹渶綆鍗曠殑鎯呭喌錛屾湭浣跨敤<display:column/>鏍囩
<%request.setAttribute( "test", new ReportList(6) );%>
<display:table name="test" />
鏍囩閬嶅巻List閲岀殑姣忎竴涓璞★紝騫跺皢瀵硅薄閲岀殑鎵鏈夊睘鎬ф樉紺哄嚭鏉ャ備竴鑸敤浜庡紑鍙戠殑鏃跺欐鏌ュ璞℃暟鎹殑瀹屾暣鎬с?br />
浜屻佷嬌鐢?lt;display:column/>鏍囩鐨勬儏鍐?br />
<display:table name="test">
<display:column property="id" title="ID" />
<display:column property="name" />
<display:column property="email" />
<display:column property="status" />
<display:column property="description" title="Comments"/>
</display:table>
property瀵瑰簲List閲屽璞$殑灞炴э紙鐢╣etXXX()鏂規硶鍙栧緱錛夛紝title鍒欏搴旇〃鏍艱〃澶撮噷鐨勫垪鍚嶃傚畾涔夊垪鏈変袱縐嶆柟寮忥細
A銆?lt;display:column property="email" />
浣跨敤<display:column/>鏍囩閲岀殑property灞炴ф潵瀹氫箟
B銆?lt;display:column title="email">email@it.com</display:column>
鍦?lt;display:column/>鏍囩浣撻噷澧炲姞鍐呭錛屽彲浠ユ槸甯擱噺錛屼篃鍙互鐢ㄥ叾浠栨爣絳劇瓑絳?br />
涓ょ鏂瑰紡姣旇緝錛岀敤property灞炴ф潵瀹氫箟鏇村姞蹇熷拰鍒╀簬鎺掑簭銆?br />
涓夈佽〃鏍兼樉紺烘牱寮忕殑瀹氫箟
A銆佸湪<display:table/>鍜?lt;display:column/>鏍囩閲屾寚瀹氭爣鍑嗙殑html灞炴э紝鐑︾悙
B銆佷慨鏀規牱寮忚〃
<display:table name="test" class="mars">
<display:column property="id" title="ID" class="idcol"/>
<display:column property="name" />
<display:column property="email" />
<display:column property="status" class="tableCellError" />
<display:column property="description" title="Comments"/>
</display:table>
閫氳繃class灞炴ф潵鎸囧畾鎵瑕佸簲鐢ㄧ殑鏍峰紡銆傚彲浠ュ湪鍏墮粯璁ゆ牱寮忚〃閲岋紙./css/screen.css錛夌洿鎺ヤ慨鏀?br />
鍥涖佹爣絳懼彇寰楁暟鎹殑鏁版嵁婧?br />
鏈夊洓縐嶈寖鍥?br />
pageScope
requestScope (榛樿) <display:table name="test2" >
sessionScope <display:table name="sessionScope.holder.list" > 娉ㄦ剰錛岃繖閲岃鎸囧畾鑼冨洿錛岄潪榛樿
applicationScope
浜斻侀氳繃澧炲姞id灞炴у垱寤洪殣鍚殑瀵硅薄
<display:table name="test" id="testit">
<display:column property="id" title="ID" />
<display:column property="name" />
<display:column title="static value">static</display:column>
<display:column title="row number (testit_rowNum)"><%=pageContext.getAttribute("testit_rowNum")%></display:column>
<display:column title="((ListObject)testit).getMoney()"><%=((ListObject)pageContext.getAttribute("testit")).getMoney()%></display:column>
</display:table>
娉ㄦ剰鍒板湪<display:table/>閲屽鍔犱簡id灞炴э紝榪欐椂灝卞湪page context閲屽垱寤轟簡涓涓殣鍚璞★紝鎸囧悜List閲岀殑褰撳墠瀵硅薄錛?br />
鍙互閫氳繃(ListObject)pageContext.getAttribute("id")鏉ユ崟鑾瘋繖涓璞°傚悓鏃惰繕鍒涘緩浜嗕竴涓猧d_rowNum瀵硅薄錛屽悓鏍鳳紝鍙?br />
閫氳繃pageContext.getAttribute("testit_rowNum")鏉ユ崟鑾鳳紝瀹冧粎浠呬唬琛ㄥ綋鍓嶈鐨勮鏁般?br />
鏈変簡榪欎袱涓殣鍚璞★紝灝卞彲浠ラ氳繃鍏朵粬鏍囩鏉ヨ闂紝渚嬪Jstl:
<display:table id="row" name="mylist">
<display:column title="row number" >
<c:out value="${row_rowNum}"/>
</display:column>
<display:column title="name" >
<c:out value="${row.first_name}"/>
<c:out value="${row.last_name}"/>
</display:column>
</display:table>
鍏佹樉紺洪儴鍒嗘暟鎹?br />
鏄劇ず寮濮嬩簲鏉℃暟鎹細閫氳繃璁懼畾length灞炴?br />
<display:table name="test" length="5">
<display:column property="id" title="ID" />
<display:column property="email" />
<display:column property="status" />
</display:table>
鏄劇ず絎笁鍒扮鍏潯鏁版嵁錛氶氳繃璁懼畾offset鍜宭ength灞炴?br />
<display:table name="test" offset="3" length="5">
<display:column property="id" title="ID" />
<display:column property="email" />
<display:column property="status" />
</display:table>
涓冦佸email鍜寀rl鍦板潃鐨勭洿鎺ヨ繛鎺?br />
<display:table name="test" >
<display:column property="id" title="ID" />
<display:column property="email" autolink="true" />
<display:column property="url" autolink="true" />
</display:table>
濡傛灉瑕佹樉紺虹殑瀵硅薄閲屽寘鍚玡mail鍜寀rl鍦板潃錛屽垯鍙互鍦╠isplay:column閲岀洿鎺ヨ瀹歛utolink="true"鏉ョ洿鎺ヨ繛鎺?br />
鍏佷嬌鐢ㄨ楗版ā寮忚漿鎹㈡暟鎹樉紺猴紙鍐欒嚜宸辯殑 decorator 錛?br />
A銆佸鏁翠釜琛ㄦ牸搴旂敤decorator
<display:table name="test" decorator="org.displaytag.sample.Wrapper" >
<display:column property="id" title="ID" />
<display:column property="email" />
<display:column property="status" />
<display:column property="date" />
<display:column property="money" />
</display:table>
org.displaytag.sample.Wrapper鍗寵嚜宸卞啓鐨刣ecorator錛屽畠瑕佺戶鎵縏ableDecorator綾伙紝鐪嬬湅瀹冪殑涓涓柟娉曪細
public String getMoney()
{
return this.moneyFormat.format(((ListObject) this.getCurrentRowObject()).getMoney());
}
寰堟槑鏄撅紝瀹冮氳繃鐖剁被鐨刧etCurrentRowObject()鏂規硶鑾峰緱褰撳墠瀵硅薄錛岀劧鍚庡鍏秅etMoney()鏂規硶榪涜‘娌規紗’
B銆佸鍗曠嫭鐨刢olumn搴旂敤decorator
<display:table name="test">
<display:column property="id" title="ID" />
<display:column property="email" />
<display:column property="status" />
<display:column property="date" decorator="org.displaytag.sample.LongDateWrapper" />
</display:table>
org.displaytag.sample.LongDateWrapper瑕佸疄鐜癈olumnDecorator鎺ュ彛錛屽畠鐨勬柟娉曪細
public final String decorate(Object columnValue)
{
Date date = (Date) columnValue;
return this.dateFormat.format(date);
}
鏄劇劧錛屽畠鑾峰緱涓嶄簡褰撳墠瀵硅薄錛堝洜涓哄畠瀹炵幇鐨勬槸鎺ュ彛錛夛紝浠呬粎鏄幏寰楄瀵硅薄鐨刢olumnValue錛岀劧鍚?#8216;娌規紗’
涔濄佸垱寤哄姩鎬佽繛鎺?br />
鏈変袱縐嶆柟娉曞垱寤哄姩鎬佽繛鎺ワ細
A銆佸湪<display:column/>閲岄氳繃澧炲姞href銆乸aramId銆乸aramName銆乸aramScope銆乸aramProperty灞炴?br />
href 鍩烘湰鐨刄RL 鍦板潃
paramId 鍔犲湪URL 鍦板潃鍚庣殑鍙傛暟鍚嶇О
paramName 鏁版嵁bean鐨勫悕縐幫紝涓鑸負null錛堝嵆浣跨敤褰撳墠List閲岀殑瀵硅薄錛?br />
paramScope 鏁版嵁bean鐨勮寖鍥達紝涓鑸負null
paramProperty 鏁版嵁bean鐨勫睘鎬у悕縐幫紝鐢ㄦ潵濉厖URL 鍦板潃鍚庣殑鍙傛暟鍊?br />
<display:table name="sessionScope.details">
<display:column property="id" title="ID" href="details.jsp" paramId="id" />
<display:column property="email" href="details.jsp" paramId="action" paramName="testparam" paramScope="request" />
<display:column property="status" href="details.jsp" paramId="id" paramProperty="id" />
</display:table>
榪欑鏂規硶綆渚跨洿鎺ワ紝浣嗙己鐐規槸鏃犳硶浜х敓綾諱技details.jsp?id=xx&action=xx鐨勫鍚圲RL
B銆佸簲鐢╠ecorator 鍒涘緩鍔ㄦ佽繛鎺ワ細
<display:table name="sessionScope.details" decorator="org.displaytag.sample.Wrapper" >
<display:column property="link1" title="ID" />
<display:column property="email" />
<display:column property="link2" title="Actions" />
</display:table>
org.displaytag.sample.Wrapper閲岀殑鏂規硶錛?br />
public String getLink1()
{
ListObject lObject= (ListObject)getCurrentRowObject();
int lIndex= getListIndex();
return "<a href=\"details.jsp?index=" + lIndex + "\">" + lObject.getId() + "</a>";
}
public String getLink2()
{
ListObject lObject= (ListObject)getCurrentRowObject();
int lId= lObject.getId();
return "<a href=\"details.jsp?id=" + lId
+ "&action=view\">View</a> | "
+ "<a href=\"details.jsp?id=" + lId
+ "&action=edit\">Edit</a> | "
+ "<a href=\"details.jsp?id=" + lId
+ "&action=delete\">Delete</a>";
}
鍗併佸垎欏?br />
瀹炵幇鍒嗛〉闈炲父鐨勭畝鍗曪紝澧炲姞涓涓猵agesize灞炴ф寚瀹氫竴嬈℃兂鏄劇ず鐨勮鏁板嵆鍙?br />
<display:table name="sessionScope.test" pagesize="10">
<display:column property="id" title="ID" />
<display:column property="name" />
<display:column property="email" />
<display:column property="status" />
</display:table>
鍗佷竴銆佹帓搴?br />
鎺掑簭瀹炵幇涔熸槸寰堢畝鍗曪紝鍦ㄩ渶瑕佹帓搴忕殑column閲屽鍔爏ortable="true"灞炴э紝headerClass="sortable"浠呬粎鏄?br />
鎸囧畾鏄劇ず鐨勬牱寮忋俢olumn閲岀殑灞炴у璞¤瀹炵幇Comparable鎺ュ彛錛屽鏋滄病鏈夌殑璇濆彲浠ュ簲鐢╠ecorator
defaultsort="1" 榛樿絎竴涓猚olumn鎺掑簭
defaultorder="descending" 榛樿閫掑噺鎺掑簭
<display:table name="sessionScope.stest" defaultsort="1" defaultorder="descending">
<display:column property="id" title="ID" sortable="true" headerClass="sortable" />
<display:column property="name" sortable="true" headerClass="sortable"/>
<display:column property="email" />
<display:column property="status" sortable="true" headerClass="sortable"/>
</display:table>
娉ㄦ剰鐨勬槸錛屽綋鍚屾椂瀛樺湪鍒嗛〉鏃跺鏋滀笉鎸囧畾sort=list,鍒欐帓搴忎粎浠呴拡瀵圭殑鏄綋鍓嶉〉闈紝鑰屼笉鏄暣涓狶ist閮借繘琛屾帓搴?br />
鍗佷簩銆乧olumn 鍒嗙粍
鍒嗙粍鍙槸闇瑕佸湪column閲屽鍔爂roup灞炴?br />
<display:table name="test" class="simple">
<display:column property="city" title="CITY" group="1"/>
<display:column property="project" title="PROJECT" group="2"/>
<display:column property="amount" title="HOURS"/>
<display:column property="task" title="TASK"/>
</display:table>
鍗佷笁銆佸鍑烘暟鎹埌鍏朵粬鏍煎紡錛堥〉闈㈡孩鍑篺ilter??錛?br />
鍦?lt;display:table/>閲岃瀹歟xport="true"
鍦?lt;display:column/>閲岃瀹歮edia="csv excel xml pdf" 鍐沖畾璇ュ瓧孌靛湪瀵煎嚭鍒板叾浠栨牸寮忔椂琚寘涓嶅寘鍚紝涓嶈瀹氬垯閮藉寘鍚?br />
<display:setProperty name="export.csv" value="false" />
鍐沖畾璇ョ鏍煎紡鑳戒笉鑳藉湪欏甸潰涓鍑?br />
<display:table name="test" export="true" id="currentRowObject">
<display:column property="id" title="ID"/>
<display:column property="email" />
<display:column property="status" />
<display:column property="longDescription" media="csv excel xml pdf" title="Not On HTML"/>
<display:column media="csv excel" title="URL" property="url"/>
<display:setProperty name="export.pdf" value="true" />
<display:setProperty name="export.csv" value="false" />
</display:table>
鍗佸洓銆侀厤緗睘鎬э紝瑕嗙洊榛樿
涓ょ鏂規硶錛?br />
A銆佸湪紼嬪簭classpath涓嬫柊寤篸isplaytag.properties鏂囦歡
B銆佸浜庡崟涓〃鏍鹼紝搴旂敤<display:setProperty>鏍囩
鍏蜂綋鍙厤緗殑灞炴э細http://displaytag.sourceforge.net/configuration.html
鍗佷簲銆佷竴涓畬鏁寸殑渚嬪瓙
<display:table name="test" export="true" sort="list" pagesize="8">
<display:column property="city" title="CITY" group="1" sortable="true" headerClass="sortable"/>
<display:column property="project" title="PROJECT" group="2" sortable="true" headerClass="sortable"/>
<display:column property="amount" title="HOURS"/>
<display:column property="task" title="TASK"/>
</display:table>
sort="list" 瀵規暣涓猯ist榪涜鎺掑簭
瀵煎嚭鏁版嵁鍒板叾浠栨牸寮忔椂錛実roup鏃犳晥
1.1鐗堟渶澶х殑鏀硅繘鍙互璇存槸緇堜簬鏀寔浜嗗ぇ瀹舵湡寰呬互涔呯殑鍒嗘鍔犺澆鍔熻兘浜?鎯蟲樉紺哄灝戞暟鎹氨杞藉叆澶氬皯鏁版嵁.1.1鐗堟湰鏀寔涓ょ鏂瑰紡鐨勫垎欏?絎竴縐嶆槸瀹炵幇鍏?font face="Courier New">org.displaytag.pagination.PaginatedList 鎺ュ彛,絎簩縐嶆槸鍦ㄩ〉闈㈠拰鍚庡彴鍚屾椂鍋氫慨鏀規潵瀹炵幇鍒嗛〉鍔熻兘.鍦ㄧ綉涓婂叧浜庣浜岀鍒嗛〉鐨勪嬌鐢ㄦ柟娉曚粙緇嶇殑闈炲父澶?鑰屼笖瀹樻柟鏂囨。涓婇潰鍐欑殑涔熸瘮杈冭緇?鎵浠ュ湪榪欓噷鎴戜富瑕佷粙緇嶈嚜宸辨槸濡備綍浣跨敤絎竴縐嶆柟寮忚繘琛屽垎欏電殑,涓旇繖縐嶆柟寮忎篃鏄畼鏂規帹鑽愬垎欏墊柟寮?鑷繁鎽哥儲鐨?鍛靛懙,涓嶅ソ涓嶈瑙佹?
棣栧厛鍐欎竴涓鎺ュ彛鐨勫疄鐜扮被
/**
* PaginatedListImpl
* User: shrek_xu
* Date: 2006-5-30
* Time: 20:35:18
*
* totalNum 鎵鏈夋潯鐩暟鐩?br />
* currentPage 褰撳墠鎵鍦ㄩ〉鍙?br />
* objectsPerPage 姣忛〉鏄劇ず鏉℃暟
* list 姝ら〉鎵闇瑕佹樉紺虹殑鏁版嵁
*/
public class PaginatedListHelper implements PaginatedList{
private List list;
private int pageNumber = 1;
private int objectsPerPage = 20;
private int fullListSize = 0;
private String sortCriterion;
private SortOrderEnum sortDirection;
private String searchId;
public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public int getObjectsPerPage() {
return objectsPerPage;
}
public void setObjectsPerPage(int objectsPerPage) {
this.objectsPerPage = objectsPerPage;
}
public int getFullListSize() {
return fullListSize;
}
public void setFullListSize(int fullListSize) {
this.fullListSize = fullListSize;
}
public String getSortCriterion() {
return sortCriterion;
}
public void setSortCriterion(String sortCriterion) {
this.sortCriterion = sortCriterion;
}
public SortOrderEnum getSortDirection() {
return sortDirection;
}
public void setSortDirection(SortOrderEnum sortDirection) {
this.sortDirection = sortDirection;
}
public String getSearchId() {
return searchId;
}
public void setSearchId(String searchId) {
this.searchId = searchId;
}
}
鐒跺悗鍦ㄤ嬌鐢ㄧ殑鏃跺欏彧闇瑕佸垱寤烘綾葷殑涓涓疄渚?涓斿皢鎵闇瑕佺殑鍙傛暟閫氳繃set鏂規硶璧嬪艱繘鍘誨氨鍙互浜?/p>
int page;
/*
*鍏朵腑request涓殑page鍙傛暟涓篸isplaytag涓殑榛樿褰撳墠欏墊暟,褰撶劧涔熷彲浠ヤ嬌鐢?TableTagParameters.SORT_AMOUNT_PAGE鏉ヨ〃紺哄綋鍓嶉〉鏁?br />
*/
if(request.getParameter("page")!=null && !"".equals(request.getParameter("page"))){
page=Integer.parseInt(request.getParameter("page"));
}else{
page=1;
}
PaginatedList paginaredList=new PaginatedListHelper();
paginaredList.setPageNumber(page);
// 姝ら〉瑕佹樉紺虹殑list鏁版嵁
List list=.......;
paginaredList.setList(list);
// 鎬誨叡鏈夊灝戞暟鎹?浠栦細鏍規嵁鎵鏈夋暟鐩拰姣忛〉鏁扮洰鑷姩緇熻欏墊暟
paginaredList.setFullListSize(...);
// 濡傛灉浣犲彧璁懼畾榪欏嚑涓弬鏁?閭d箞鍏朵綑鐨勫弬鏁板皢浼氶粯璁や負浣犲疄鐜扮被涓墍璧嬬殑鍒濆?/p>
鏈鍚?浣犺繕闇瑕佸皢榪欎釜瀹炰緥鏀懼叆鍒皉equest鎴杝ession涓幓,濂借displaytag鐭ラ亾榪欎釜鏄閮ㄥ垎欏?/p>
request.setAttribute("pageList",paginaredList);
鍦ㄥ墠鍙板彧闇璞′笅闈㈣繖鏍峰啓灝卞彲浠ヤ簡
<display:table name="${pageList}" id="list" requestURI="">
<display:column property="id"/>
</display:table>
鏈寮濮嬫垜瀵規瘡嬈¢兘瑕佷紶鍏ユ誨叡鏈夊灝戞潯鏁版嵁琛ㄧず鐤戦棶,璁や負榪欎釜娌℃湁蹇呰,鍙渶瑕佺涓嬈′紶鍏ュ氨鍙互浜?浣嗘槸鍚庢潵浠旂粏鎯蟲兂,鍥犱負鏁翠釜鍒嗛〉榪囩▼鏄姩鎬佺殑,鎵浠?寰堟湁鍙兘鍦ㄤ綘緲婚〉鐨勫悓鏃?鍘熸潵鐨勬暟鎹凡緇忓彂鐢熶簡鍙樺寲,鎵浠ユ瘡嬈′紶鍏ユ繪暟鐩槸寰堟湁蹇呰鐨?/p>
濡傛灉澶у闇瑕佽漿杞?璇蜂綘涔熼檮涓婃鏂囪繛鎺?/p>
public class ToGBKFuncs {
public static String toGBK(String str ,String charset)
throws java.io.UnsupportedEncodingException
{
return new String(str.getBytes(charset),"GBK");
}
}
WEB-INF\tlds\myfuncs.tld
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptagliblibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<uri>/myfuncs</uri>
<function>
<name>toGBK</name>
<function-class>dgut.ke.el.ToGBKFuncs</function-class>
<function-signature>
java.lang.String toGBK(java.lang.String,java.lang.String)
</function-signature>
</function>
</taglib>
test.jsp
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib prefix="myfn" uri="/myfuncs" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tag</title>
</head>
<body>
嬈㈣繋浣犵殑鍒版潵 ${myfn:toGBK(param.username,"ISO8859-1")} !
</body>
</html>
浣嗘槸鏈変竴涓棶棰樹竴鐩村洶鎵版垜錛屽氨鏄湁涓枃浣滀負琛ㄥ崟鎻愪氦鍐呭鐨勬椂鍊欙紝緲婚〉灝變笉鑳界敤浜嗭紝涓枃鍙樻垚浜嗕貢鐮併?/p>
琛ㄥ崟浼犻佹椂錛?!--startfragment --> form鐨勬彁浜ら噰鐢ㄧ殑鏄疨ost鏂規硶錛岃繖娌¢敊錛屼絾閾炬帴閲囩敤鐨勬槸Get鏂規硶錛岄棶棰樺氨鍑哄湪榪欓噷錛屽洜涓哄拰Tomcat4鐩告瘮錛孴omcat5鐨刾ost鍜実et閲囩敤鐨勬柟寮忎笉鍐嶇浉鍚屼簡錛屾眽瀛楃紪鐮佺殑瀹炵幇鏂瑰紡涔熶笉鍚屼簡銆?/p>
Post鏄皢鍦板潃浼犻佷竴嬈★紝灝唂orm鐨勬暟鎹崟鐙彁浜わ紝鑰孏et鍒欐槸灝嗗湴鍧鍜屽弬鏁頒竴璧蜂紶閫侊紝浼犻佺殑涓嶆鏄痜orm鐨勬暟鎹?br />
榛樿鎯呭喌涓嬶紝Tomcat瀵硅姹傞噰鐢ㄧ殑榛樿緙栫爜鏄疘SO-8859-1錛?/a>榪欐牱鎴戜滑鎻愪氦鐨勬眽瀛楄璁や負鏄疘SO-8859-1鐨勭紪鐮侊紝鎵浠ュ湪紼嬪簭涓帴鏀舵椂鏄劇ず涔辯爜銆?nbsp; 鍦ㄨ繃婊ゅ櫒涓皟鐢╮equest.setCharacterEncoding("GBK")錛岄偅涔圥ost涓婃潵鐨勬眽瀛楀皢琚涓烘槸GBK緙栫爜錛岃孴omcat5瀵逛簬Get璇鋒眰涓婃潵鐨勭紪鐮佸茍涓嶆牴鎹繃婊ゅ櫒鐨勮瀹氳鯨璁ょ紪鐮佹柟寮忥紝榛樿鐨勪緷鐒舵槸ISO-8859-1錛?a>鎵浠ワ紝鍗充嬌浣犵殑欏甸潰浣跨敤榛樿鐨勭紪鐮佹柟寮忚繘琛岀紪鐮侊紝鐒跺悗浣跨敤ISO-8859-1榪涜瑙g爜錛屽緱鍒扮殑緇撴灉涔熶笉瀵?/a>銆?
瑙e喅鏂規硶錛?br />
鍦⊿erver.xml鐨刢onnector閮ㄥ垎璁懼畾URIEncoding鐨勫鹼紝鏍規嵁緙栫爜鏂瑰紡鎸囧畾鑷繁鐨勫?/a>灝卞彲浠ヤ簡
渚嬪錛歎RIEncoding="GB2312"
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=679832
JSP鏂囦歡錛?/p>
name="resultList" 灝嗚褰曢泦瀛樺湪session鎴栬卹equest涓殑閿?br />
export="true" 鏄惁鏄劇ず瀵煎嚭閫夐」
pagesize="100" 姣忛〉鏄劇ず100鏉℃暟鎹?br />
requestURI="logQueryAction.do" struts涓璦ction鐨勫悕縐幫紝濡傛灉璁板綍灝戯紝鍙互鐩存帴鍒嗛〉
sort="external" 澶栭儴鎺掑簭
id="element" 琛ㄦ牸id鍊鹼紝鐢ㄤ簬紼嬪簭寰楃浉鍏崇殑鍙傛暟
partialList="true" 鍒嗘浠庢暟鎹簱涓鏁版嵁
size="resultSize" 璁板綍鐨勬繪潯鏁幫紝鐢ㄤ簬璁$畻鎬婚〉鏁?/p>
struts action:
鍏朵腑鐨勯〉闈㈠鑸槸鑻辨枃鐨勶紝鍙淇敼org.displaytag.properties.TableTag.properties閰嶇疆鏂囦歡灝卞彲浠ユ妸鑻辨枃鏀規垚涓枃銆傚悓鏃惰繕鍙互鎸囧畾瀵煎嚭鏂囦歡鐨勭被鍨嬩互鍙婃枃浠跺悕銆?/p>
濡傛灉涓嶆寚瀹氭枃浠跺悕錛屽湪鐐瑰嚮瀵煎嚭excel鐨勬椂鍊欙紝灝變細鍦╥e紿楀彛涓墦寮excel鏂囦歡銆傚緢鐑︿漢錛?br /> 鎸囧畾鏂囦歡鍚嶅悗灝卞彲浠ラ夋嫨淇濆瓨鍜屾墦寮浜嗐?/p>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1076047
涓嬮潰浠嬬粛鍑犱釜Display鏈甯哥敤鐨勫姛鑳斤紝鏇村鍔熻兘璇峰弬鑰?a >http://displaytag.homeip.net/displaytag-examples-1.1/銆?br />
1. 鍒嗛〉
濡傛灉鎯沖浠g爜鍒嗛〉錛屽彧闇鍦╠isplay:table鏍囩涓坊鍔犱竴欏筽agesize="姣忛〉鏄劇ず琛屾暟"錛屽
<display:table name="test" pagesize="10"/>
2. 瀵瑰垪鎺掑簭
display tag鍙鍒楄繘琛屾帓搴忥紝灝辨槸鐐瑰嚮鍒楀悕錛屽璇ュ垪鐨勬暟鎹繘琛屾帓搴忋備綘鍙渶瀵規兂瑕佹帓搴忕殑鍒楁坊鍔?sort="true" 灝監K錛屽涓嬮潰鐨勪唬鐮佸彲瀵瑰墠涓夊垪榪涜鎺掑簭銆傚湪display:table涓坊鍔燿efaultsort="鍒楁暟"錛屽彲榛樿瀵規寚瀹氱殑鍒楁帓搴忋?br />
<display:table name="test" styleClass="list" cellspacing="0" cellpadding="0" defaultsort="1">
<display:column property="id" title="ID" class="idcol" sort="true"/>
<display:column property="name" url="detail.jsp" paramId="id" paramProperty="id" sort="true"/>
<display:column property="email" autolink="true" sort="true"/>
<display:column property="description" title="Comments"/>
</display:table>
濡傛灉table鏈夊垎欏碉紝Display Tag榛樿鍙褰撳墠欏佃繘琛屾帓搴忥紝濡傛灉鎯沖鏁翠釜list鎺掑簭錛屽彲浠ュ湪display:table涔嬮棿娣誨姞涓孌典唬鐮侊細
<display:setProperty name="sort.amount" value="list"/>
3. 瀵煎嚭鏁版嵁
鍦╠isplay:table涓坊鍔爀xport="true"錛岀湅鐪嬩細鍑虹幇浠涔堬紒Display Tag榛樿浼氭彁渚涗笁縐嶆暟鎹鍑烘柟寮忥細CSV銆丒xcel銆乆ML 銆?br />
鍙﹀Display Tag榪樺彲浠ュ鍑轟負PDF鏍煎紡錛屽湪http://prdownloads.sourceforge.net/itext/涓嬭澆涓涓緟鍔╁寘iText.jar錛宑opy鍒發ib鐩綍涓嬶紝鐒跺悗鍦╠isplay:table涔嬮棿娣誨姞涓孌典唬鐮侊細
<display:setProperty name="export.pdf" value="true"/>錛屽ぇ鍔熷憡鎴愩?/p>
4. Display Tag鐨勫睘鎬ц緗?br />
鍓嶉潰鎵璇寸殑display:setProperty 鏄竴縐嶆敼鍙楧isplay Tag灞炴х殑鏂規硶錛屼絾鏄湪姣忎釜jsp涓兘瑕佸啓澶夯鐑︿簡銆?br />
Display Tag涓緗簡寰堝榛樿鐨勫睘鎬э紝瀹冩湁涓涓笓闂ㄧ殑灞炴ф枃浠訛紝鏄湪瀹冪殑jar鍖呬腑鐨刣isplaytag/properties/TableTag.properties
鎯寵鏀瑰彉瀹冪殑榛樿灞炴э紝鎴戜滑鍙互鍦╓EB-INF\classes涓嬫柊寤轟竴涓枃浠禿isplaytag.properties錛屼豢鐓ableTag.properties涓睘鎬х殑鏍煎紡璁劇疆闇瑕佷慨鏀圭殑灞炴с?br />
TableTag.properties涓殑# messages涓緗殑鏄樉紺哄湪欏甸潰涓婄殑鎻愮ず淇℃伅銆傞粯璁ゆ槸鑻辨枃鐨勶紝鎴戜滑鍙互鎶婂畠鏀逛負涓枃鐨勩備笉榪囪繖閲屽彧鑳戒嬌鐢╱nicode錛屽氨鏄涓枃瀛楃蹇呴』杞崲涓簎nicode鐮侊紝榪欎釜鍙互浣跨敤jdk鑷甫鐨刵ative2ascii.exe榪涜杞崲銆?/p>
5. 鍏跺畠鍔熻兘
DisplayTag榪樻湁涓浜涘緢瀹炵敤鐨勫皬鍔熻兘錛岃繖閲屾彁涓や釜銆備竴涓槸瀵規暟鎹殑Format錛岃繖鏄?.1鐗堟湰娣誨姞鐨勬柊鍔熻兘錛屽彲浠ヤ嬌鐢ㄦ爣絳劇殑鏂瑰紡鏍煎紡鍖栨椂闂淬佹暟瀛椼佸瓧絎︿覆銆傛瘮濡傛棩鏈燂紝鍦ㄩ渶瑕佹牸寮忓寲鐨刢olumn鏍囩涓坊鍔爁ormat="{0,date,yyyy-MM-dd}"錛岀涓涓弬鏁頒負鏍煎紡鍖栫殑鏁版嵁搴忓彿錛岀浜屼釜鍙傛暟鏄暟鎹被鍨嬶紝鏁板瓧涓簄umber錛岀涓変釜鍙傛暟涓烘暟鎹牸寮忋?br />
鍙﹀涓涓姛鑳芥槸瀵箃able鏁版嵁鐨勫悎璁″姛鑳姐傚湪table鏍囩涓坊鍔?decorator="org.displaytag.decorator.TotalTableDecorator"錛岀劧鍚庡湪鎯寵榪涜鍚堣鐨勬暟鎹垪鐨刢olumn鏍囩涓坊鍔?total="true"錛岃鍒楀氨鍙互琚綆楁繪暟浜嗐備絾榪欎釜鍔熻兘鏈変釜緙虹偣錛屼笉鑳界敤鍦ㄦ湁鍒嗛〉鐨勬椂鍊欙紝瀹冨彧鑳藉悎璁$涓欏電殑鏁版嵁銆?br />
DisplayTag鐨勪笉瓚?br />
鍒濇浣跨敤DisplayTag鐨勪漢鍙兘浼氳寰楁儕鍠滐紝浣嗘槸鐢ㄤ箙浜嗕細鍙戠幇寰堝闂錛屾渶澶х殑闂鏄涓枃鐨勬敮鎸佷笉濂斤紝姣斿濡傛灉鏌ヨ鏉′歡涓湁涓枃錛屽氨鏃犳硶緲婚〉錛屾棤娉曞涓枃鎺掑簭錛屽皢涓枃瀵煎嚭涓烘寚瀹氭枃浠舵椂鍑虹幇涔辯爜絳夌瓑銆傝繖浜涢棶棰樻湁鏃跺欎細璁╀漢寰堥儊闂鳳紝鏈夋椂鍊欓煎緱浣犺鍘諱慨鏀瑰畠鐨勬簮浠g爜銆備笅闈㈡槸瀵逛互涓婂嚑涓棶棰樼殑瑙e喅鏂規硶錛?br />
1. 瀵逛簬涓枃鏃犳硶緲婚〉銆佹帓搴忥紝鏈綆鍗曠殑鍔炴硶鏄慨鏀筎omcat涓嬬殑server.xml鏂囦歡銆傛壘鍒癏TTP鐨凜onnector鏍囩錛屽湪閲岄潰娣誨姞涓欏筓RIEncoding="..."錛屽紩鍙烽噷闈㈢殑鍐呭鍙栧喅浜庝綘鐨勯〉闈㈢紪鐮侊紝姣斿鍙互鏄疓BK錛孶TF8絳夈傝繖鏍蜂笂闈袱涓棶棰樺氨鍙互瑙e喅浜嗐?br />
2. 瀵煎嚭涓烘枃浠訛細鍏跺疄榪欎釜鍔熻兘闄や簡涓枃鏀寔澶栬繕鏈夊緢澶氬叾瀹冮棶棰橈紝姣斿瀹冧細灝咹tml鏍囩涓璧峰鍑恒佸彧瀵煎嚭鏄劇ず鐨勫唴瀹癸紝浣嗗鏋滃table榪涜浜哾ecorator錛宒ecorator鍚庣殑鍐呭鏃犳硶瀵煎嚭銆傚鏋滄兂瑕佸皢涓枃姝g‘瀵煎嚭錛岄渶瑕佷慨鏀笵isplayTag婧愪唬鐮併?br />
涓嬭澆鐩稿悓鐗堟湰鐨勬簮浠g爜錛屽湪org.displaytag.export.ExcelView.java鏂囦歡涓壘鍒癵etMimeType()鏂規硶錛屽皢姝ゆ柟娉曚慨鏀逛負 return "application/vnd.ms-excel;charset=GB2312";錛屼慨鏀瑰悗瀵煎嚭鏁版嵁鐨勯熷害浼氭參寰堝錛屼笉榪囧皢灝卞惂銆?br />
3. 鏂扮増鐨凞isplayTag1.1娣誨姞浜嗗涓嬈″彇閮ㄥ垎鏁版嵁鐨勬敮鎸侊紝鐩稿叧鐨勬爣絳懼寘鎷琾artialList鍜宻ize錛岄渶瑕佽緗畃artialList="true"鍜宻ize鐨勫ぇ灝忋傚叿浣撴庝箞鐢ㄥ伓榪樻病鐮旂┒銆?/p>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=296316
1錛?span>servlet鐨?span>xml閰嶇疆錛氬湪action寮曠敤涓竴瀹氳鍔犱笂鏍圭洰褰曪紙/project/servlet/Hello錛?/span>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>mypack.Hello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/servlet/Hello</url-pattern>
</servlet-mapping>
2錛?span>JSP2.0鏂扮壒鎬э細EL錛?span>Expression Language錛夎璦錛氬彧鑳藉湪鏍囩寮濮嬪拰鏍囩緇撴潫涔嬮棿
Eg:name:${param.name } ${paramValues.habit[0]} ${paramValues.habit[1]}
<%request.setAttribute("title","book"); %> ${requestScope.title }
3.JSTL(Java Server Page Standalone Tag Library):鏈韓灝辨槸涓縐嶅己鏍囪錛屾瘮JSP鍔ㄤ綔鏇村己
a.涓鑸敤閫斿拰鏉′歡鏍囩錛?/span>
1.<c:out value="hello" default="ol" escapeXml="false"> body:can not see</c:out>
2.<c:set scope="page" value="nihao" var="name1"/> <c:out value="${name1}"/>
3.<jsp:useBean id="User" class="mypack.User"></jsp:useBean>
<c:set property="name" target="${User}" value="k" > value is default</c:set>
<c:out value="${User.name}"/> //杈撳嚭k
4.<c:set var="count" value="100" scope="page"/> <c:if test="${count>78}">ok </c:if>
5.<c:remove var="count" scope="page"/>
6.<c:catch var="e"><%Integer.parseInt("m");%></c:catch> <c:out value="e.message"/>
6.<c:choose>
<c:when test="${count<=0}"> <font color="bule"> </c:when>
<c:otherwise> <font color="green"> </c:otherwise> </c:choose>
the value count is:<c:out value="${count}"/>
b.榪唬寰幆鏍囩錛?span><jsp:useBean id="test" class="mypack.User"></jsp:useBean>
<% Collection users_c=new ArrayList();
for(int i=0;i<3;i++) { test.setName("foo"+i); users_c.add(test); }
session.setAttribute("attr",users_c); %>//鍙湁鍦ㄤ竴瀹氳寖鍥村唴鎵嶈兘鎵懼埌
<c:forEach var="each" items="${attr}"> <c:out value="${each.name}"/></c:forEach>
<c:forEach var="s" begin="50" end="60" step="2"><c:out value="${s}"/></c:forEach>
c.URL鏍囩錛?span><c:import url="test1.jsp" charEncoding="gb2312"></c:import>
<c:url value="test2.jsp" var="nx" scope="request">//url閲嶅畾涔?/span>
<c:param name="user" value="liming"></c:param> </c:url> <c:redirect url="${nx}"/>
d:SQL鏍囩錛?span><sql:setDataSource var="db1" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mydb" user="root" password="root" scope="session" />
<sql:query var="query" dataSource="${db1}" sql="SELECT * FROM mytable"/>
<table border="1"> <c:forEach var="row" items="${query.rows}">//瑕佽凱浠g殑闆嗗悎
<tr> <td>name:<c:out value="${row.name}"/></tr></c:forEach> </table>
<sql:update dataSource="${db1}" sql="update mytable set age='22' where id=1" var="update1"/>
//瑕佸鍏?span><%@ taglib prefix="sql|c "uri="http://*/sql|core"%>