1.
WebWork中文問題解決:?
a)在webwork.properties文件中,添加:?
webwork.i18n.encoding?=?UTF-8?
它主要是用來設(shè)置WebWork?UI標(biāo)簽庫的編碼,?
要保持你的頁面和編碼與你在encoding設(shè)置的一致,否則重復(fù)編碼出現(xiàn)亂碼.?
如果不設(shè)置它將通過System.getProperty("file.encoding"來獲取默認(rèn)字符編碼。
?
PS:2.1.6版本中存在BUG,不能夠使用定義的encoding.?
b)寫一個Filter,將編碼設(shè)置為UTF-8。?
例如SetCharacterEncodingFilter。它解決Action數(shù)據(jù)傳遞時的編碼,但是不能解決屬性在Action或是Model賦值的編碼.?
c)velocity.properties文件中,添加:?
input.encoding=UTF-8?
output.encoding=UTF-8?
default.contentType=text/html;?charset=UTF-8?
它是用來設(shè)置.vm頁面的編碼方式.?
d)使用freemarker作為view層,可以再web.xml中指定字符屬性;
<servlet>
????????<servlet-name>freemarker</servlet-name>
????????<servlet-class>com.opensymphony.webwork.views.freemarker.FreemarkerServlet</servlet-class>
????????<!--?FreemarkerServlet?settings:?-->
????????<init-param>
????????????<param-name>TemplatePath</param-name>
????????????<param-value>/templates/</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>
???????<!--????????指定編碼?????????-->
????????<init-param>
????????????<param-name>default_encoding</param-name>
????????????<param-value>UTF-8</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>
2.
WebWork表單字段驗(yàn)證:?
a)Action必須繼承ActionSurport;?
b)在xwork.xml文件必須定義?
<action?name="hello"?class="test.HelloAction">?
???<result?name="success">/result.jsp</result>????
???<result?name="input">?
????????<param?value="/location">/index.jsp</param>?
???</result>???
???<interceptor-ref?name="validationWorkflowStack"/>?
</action>?
其中
input?是必須定義的,另外要使用?
<param?value="location">/index.jsp</param>?
才可以在驗(yàn)證錯誤后回到輸入頁面。?
c)
在Action類名-validation.xml文件必須與Action類在同一目錄下,?
d)定義的<message/>元素,當(dāng)提示消息為中文時候必須在文件頭定義:?
<?xml?version="1.0"?encoding="GBK"?>?
3.
WebWork的標(biāo)簽的用法:?
a)需要提交的表單項(xiàng)
name屬性值均為常量,因此均以單引號包圍,以與Model中的變量相匹配,
<ww:form?namespace="'/test'"?action="'ftltest'"?method="'POST'">
???????????????<ww:textfield?name="'msg'"?label="消息"></ww:textfield>
???????????????<ww:submit?value="/提交"?/>
????</ww:form>
b)<ww:radio/>和<ww:select/>標(biāo)簽中的list的屬性可以使用Map類型,以key和value對應(yīng)listKey,listValue屬性.
第一種寫法:
<ww:select?label="'Months'"?
????????name="'months'"?
????????????list="#{'01':'Jan',?'02':'Feb',?[]}"?
????????value="/01"
????????required="true"?
/>
第二種寫法:
<ww:select?label="'Pets'"?
????????name="'petIds'"?
????????list="petDao.pets"?
????????listKey="id"?
????????listValue="name"?
????????multiple="true"?
????????size="3"?
????????required="true"?
/>
<!--petDao.pets為普通對象,使用其id為KEY,name為value-->
<!--如果petDao.pets為Map類型,則可省略listKey和listValue屬性-->
c)WebWork2中的UI標(biāo)簽的模板定制,可以在webwork.properties文件中指定相關(guān)屬性,并且定制模板文件;
webwork.ui.theme=xhtml?????//可用的theme還有simple;
webwork.ui.templateDir=template????//模板路徑;
#sets?the?default?template?type.?Either?vm?or?jsp
webwork.ui.templateSuffix=vm???//模板類型,還支持JSP模板,開發(fā)可以使用FreeMarker定制模板;
4.WebWork的國際化使用:?
a)<ww:i18?name="'message'">?
????????<ww:text?name="'key'"/>?
??</ww:i18>?
使用message_zh_CN.properties中包含key=****;?
b)在Action中的getText()方法資源來自Action的類名.properties
c)在Action中可以使用getTexts()獲得具體的ResourceBundle;
d)在view層一樣可以使用getText()方法;
????????<ww:i18n?name="'messages'">
????????????<!--在messages.properties文件中有key->index_msg-->????????
????????????????<ww property?value="getText('index_msg')"/>
????????</ww:i18n>