struts2標籤使用小結

1 #號,能訪問actioncontext的上下文資源,例子如下:
public class OgnlAction extends ActionSupport implements ServletContextAware,
ServletRequestAware, SessionAware {

private static final long serialVersionUID = -6175904602786022346L;

private HttpServletRequest request;
private ServletContext application;
private Map<String, Object> session;

@SuppressWarnings("all")
private List<Magazine> magazineList = new ArrayList<Magazine>() {
{
add(new Magazine("時代週刊", 10));
add(new Magazine("足球之夜", 19));
add(new Magazine("時尚", 20));
add(new Magazine("時代影視", 50));
}
};

public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

public void setServletContext(ServletContext application) {
this.application = application;
}

@SuppressWarnings("all")
public void setSession(Map session) {
this.session = session;
}

public String execute() {

request.setAttribute("account", "account from request");
application.setAttribute("account", "account from response");
session.put("account", "account from session");

return Action.SUCCESS;
}

public List<Magazine> getMagazineList() {
return magazineList;
}

public void setMagazineList(List<Magazine> bookList) {
this.magazineList = bookList;
}

JSP頁面:
所有的ID:<struts:property value="#parameters.id"/> <br/>
第一個ID:<struts:property value="#parameters.id[0]"/> <br/>
request 中取屬性:<struts:property value="#request.account"/> <br/>
session 中取屬性:<struts:property value="#session.account"/> <br/>
application 中取屬性:<struts:property value="#application.account"/> <br/>
attr 中取屬性:<struts:property value="#attr.account"/> <br/>
<hr />
價格大於18元的雜誌共有 <struts:property value="magazineList.{?#this.price>18}.size()" /> 本,分別是:<br/>
<struts:iterator value="magazineList.{?#this.price>18}">
<struts:property value="name" /> - ¥<struts:property value="price" />. <br/>
</struts:iterator>
<hr />
名稱包含“時代”二字的雜誌共有 <struts:property value="magazineList.{?#this.name.contains('時代')}.size()"/> 本,分別是:<br/>
<struts:iterator value="magazineList.{?#this.name.contains('時代')}">
<struts:property value="name" /> - ¥<struts:property value="price" />. <br/>
</struts:iterator>
<hr />
“足球之夜”的價格爲 ¥<struts:property value="magazineList.{?#this.name.contains('足球之夜')}[0].price"/>。

其中注意OGNL的靈活用法

2 下面兩個注意區別:
    <struts:label label="#request.account"></struts:label>
<struts:label label="%{#request.account}"></struts:label>

    其中第一個會輸出字符串#request.account",第二個會把request.account的結果輸出.

3 autocomplete控件:
  
<s:url id="dataUrl" value="/autocompleteAjaxData.jsp" />

請選擇國家:
<struts:autocompleter name="country" theme="ajax" href="%{dataUrl}"
loadOnTextChange="true" loadMinimumCount="1" autoComplete="false"
showDownArrow="true" indicator="indicator"  />
<img id="indicator" src="images/loading.gif" />
     其中href爲獲取數據的URL,indicator可以爲一個屬性或文字,獲取數據的JSP如下:
out.clear();

request.setCharacterEncoding("UTF-8");

response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);

String[] countries = { "。。。。。“}
String country = request.getParameter("country");

if (country == null)
country = "";

StringBuffer buffer = new StringBuffer();

for (int i = 0; i < countries.length; i++) {
if (countries[i].toLowerCase()
.startsWith(country.toLowerCase())) {
if (buffer.length() != 0)
buffer.append(",");
buffer.append("['" + countries[i] + "']");
}
}

Thread.sleep(500);

out.print("[" + buffer + "]");

4 連動框doubleselect:
  <struts:head theme="ajax" />
<%
List<String> provinceList = new ArrayList<String>();
provinceList.add("北京");
provinceList.add("上海");
provinceList.add("天津");
provinceList.add("重慶");
provinceList.add("河北");
provinceList.add("河南");
provinceList.add("山東");
provinceList.add("山西");
provinceList.add("江蘇");
provinceList.add("浙江");

request.setAttribute("provinceList", provinceList);

Map<String, List<String>> cityMap = new HashMap<String, List<String>>();

{
// 北京市
List<String> cityList = new ArrayList<String>();

cityList.add("東城區");
cityList.add("西城區");
cityList.add("海淀區");
cityList.add("朝陽區");

cityMap.put("北京", cityList);
}
{
// 山東省
List<String> cityList = new ArrayList<String>();

cityList.add("青島");
cityList.add("濟南");
cityList.add("濰坊");
cityList.add("煙臺");
cityList.add("淄博");

cityMap.put("山東", cityList);
}

request.setAttribute("cityMap", cityMap);
%>

<struts:form action="login">
<struts:doubleselect name="province" list="#request.provinceList"
doubleName="city" doubleList="#request.cityMap.get(top)" label="請選擇省份、市"/>
</struts:form>
5 optiontransferselect標籤
<%
List<String> provinceSelected = new ArrayList<String>();

provinceSelected.add("北京");
provinceSelected.add("上海");
provinceSelected.add("天津");
provinceSelected.add("重慶");
provinceSelected.add("河北");
provinceSelected.add("河南");
provinceSelected.add("山東");
provinceSelected.add("山西");
provinceSelected.add("江蘇");
provinceSelected.add("浙江");

request.setAttribute("provinceSelected", provinceSelected);

List<String> provinceUnselected = new ArrayList<String>();

provinceUnselected.add("湖南");
provinceUnselected.add("湖北");
provinceUnselected.add("雲南");
provinceUnselected.add("廣東");
provinceUnselected.add("廣西");

request.setAttribute("provinceUnselected", provinceUnselected);
%>
<struts:form action="login">
<struts:optiontransferselect name="province"
doubleList="#request.provinceSelected"
list="#request.provinceUnselected" doubleName="city" leftUpLabel="向上"
leftDownLabel="向下" rightDownLabel="向下" rightUpLabel="向上"
leftTitle="已經選中的省份" headerKey="" headerValue="---請選擇省份---"
rightTitle="剩餘的省份" />
</struts:form>

6 TAB標籤
<s:tabbedPanel id="test">

<s:div id="one" label="第一個 TabItem" theme="ajax" labelposition="top"
cssStyle="padding: 10px; ">
第一個 TabItem <br />
第一個 TabItem <br />
</s:div>

<s:div id="two" label="第二個 TabItem" theme="ajax"
cssStyle="padding: 10px; ">
        第二個 TabItem <br />
        第二個 TabItem <br />
</s:div>

<s:url action="divNews" id="divNewsUrl"></s:url>
<s:div id="three" label="新聞列表" theme="ajax" href="%{#divNewsUrl}">
</s:div>

</s:tabbedPanel>

<br/>

<s:tabbedPanel id="test2" closeButton="tab">

<s:div id="one2" label="第一個 TabItem" theme="ajax" labelposition="top"
cssStyle="padding: 10px; ">
第一個 TabItem <br />
第一個 TabItem <br />
</s:div>

<s:div id="two2" label="第二個 TabItem" theme="ajax"
cssStyle="padding: 10px; ">
        第二個 TabItem <br />
        第二個 TabItem <br />
</s:div>

<s:div id="three2" label="新聞列表" theme="ajax" href="%{#divNewsUrl}">
</s:div>

</s:tabbedPanel>
發佈了38 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章