首先下载最新的dwr包:dwr.jar
在web.xml中配置如下
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>config-recruit</param-name>
<param-value>WEB-INF/search-dwr.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
其中search-dwr.xml放置自己写的配置文件
由中文得到拼音和简拼的方法如下
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
/**
* 汉字转换位汉语拼音,英文字符不变
*
* @author xuke
*
*/
public class SearchKeySpell {
/**
* 汉字转换位汉语拼音首字母,英文字符不变
*
* @param chines
* 汉字
* @return 拼音
*/
public static String converterToFirstSpell(String chines) {
String pinyinName = "";
char[] nameChar = chines.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < nameChar.length; i++) {
if (nameChar[i] > 128) {
try {
pinyinName += PinyinHelper.toHanyuPinyinStringArray(
nameChar[i], defaultFormat)[0].charAt(0);
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyinName += nameChar[i];
}
}
return pinyinName;
}
/**
* 汉字转换位汉语拼音,英文字符不变
*
* @param chines
* 汉字
* @return 拼音
*/
public static String converterToSpell(String chines) {
String pinyinName = "";
char[] nameChar = chines.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < nameChar.length; i++) {
if (nameChar[i] > 128) {
try {
pinyinName += PinyinHelper.toHanyuPinyinStringArray(
nameChar[i], defaultFormat)[0];
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyinName += nameChar[i];
}
}
return pinyinName;
}
/*
* 注:下面的main函数在执行的时候,会出现版本错误。 解决方法:把该项目的配置设为jdk1.5即可。如果不用main函数,则不需要改配置。
* public static void main(String[] args) {
* System.out.println(converterToSpell("欢迎来到中国"));
* System.out.println(converterToFirstSpell("欢迎来到中国")); }
*/
search-dwr.xml文件如下
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<!-- 得到关键字的拼音和简拼 -->
<create javascript="searchKeySpell" creator="new">
<param name="class" value="com.hys.medicaldb.struts.action.system.searchKey.SearchKeySpell"></param>
</create>
<convert converter="bean" match="com.hys.medicaldb.struts.action.system.searchKey.SearchKeySpell"></convert>
</allow>
</dwr>
下面是jsp页面中要引用的js
其中${ctx} == /medicaldb 是我的项目名称路径,你可以改为自己的项目名
<script type="text/javascript" src="${ctx}/dwr/util.js"></script>
<script type="text/javascript" src="${ctx}/dwr/engine.js"></script>
<script type="text/javascript"
src='/medicaldb/dwr/interface/searchKeySpell.js' /></script>
<style>
searchKeySpell.js'的名字searchKeySpell一定要和search-dwr.xml中的相同。
下面在简拼和拼音中定义用于显示结果的id,在关键词中定义id和onchange或者onblur事件。
<tr>
<td width="100" class="td1">
关键词:
</td>
<td class="td1">
<input type="text" name="keyWord" size="20" id="keyWord"
maxlength="50" elname="关键字" required="1" pattern="String"
onchange="trans()" class="input_style"
value="${searchKey.keyWord}" />
<span id="red">*</span>请输入关键词
</td>
</tr>
<tr>
<td width="100" class="td1">
简拼:
</td>
<td class="td1">
<input type="text" name="jianpin" size="20" id="jianpin"
maxlength="50" class="input_style" value="${searchKey.jianpin}" />
</td>
</tr>
<tr>
<td width="100" class="td1">
拼音:
</td>
<td class="td1">
<input type="text" name="pinyin" size="20" id="pinyin"
maxlength="50" class="input_style" value="${searchKey.pinyin}" />
</td>
</tr>
下面是js文件
//转换
function trans(){
var keyWord = document.getElementById("keyWord").value;
searchKeySpell.converterToFirstSpell(keyWord,setJianpin);
searchKeySpell.converterToSpell(keyWord,setPinyin);
}
//转换为拼音
function setPinyin(data){
DWRUtil.setValue("pinyin",data);
}
//转换为简拼
function setJianpin(data){
DWRUtil.setValue("jianpin",data);
}
以上代码完全通过调试。如果哪位读者有疑问,请发邮件361570665@qq.com给我,我会详细解答。