在Struts 2中, <sx:autocompleter>标记是一个组合框,当用户在文本框中键入内容时,它将自动提示下拉建议列表。
此功能由dojo库实现,因此,请确保将“ struts2-dojo-plugin.jar ”作为依赖项库,将“ struts-dojo-tags ”标签放在页面顶部,并通过<sx输出其标题信息:头/> 。
例如,
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<html>
<head>
<sx:head />
</head>
<body>
<sx:autocompleter label="What's your lucky number?"
name="yourLuckyNumber" autoComplete="false"
list="{'1','12','13','14'}" />
产生以下HTML
<html>
<head>
<script language="JavaScript" type="text/javascript">
// Dojo configuration
djConfig = {
isDebug: false,
bindEncoding: "UTF-8"
,baseRelativePath: "/Struts2Example/struts/dojo/"
,baseScriptUri: "/Struts2Example/struts/dojo/"
,parseWidgets : false
};
</script>
<script language="JavaScript" type="text/javascript"
src="/Struts2Example/struts/dojo/struts_dojo.js"></script>
<script language="JavaScript" type="text/javascript"
src="/Struts2Example/struts/ajax/dojoRequire.js"></script>
<link rel="stylesheet" href="/Struts2Example/struts/xhtml/styles.css"
type="text/css"/>
<script language="JavaScript" src="/Struts2Example/struts/utils.js"
type="text/javascript"></script>
<script language="JavaScript" src="/Struts2Example/struts/xhtml/validation.js"
type="text/javascript"></script>
<script language="JavaScript" src="/Struts2Example/struts/css_xhtml/validation.js"
type="text/javascript"></script>
</head>
...
<tr>
<td class="tdLabel">
<label for="resultAction_yourLuckyNumber" class="label">
What's your lucky number?:</label></td>
<td>
<select dojoType="struts:ComboBox" id="resultAction_yourLuckyNumber"
autoComplete="false" name="yourLuckyNumber"
keyName="yourLuckyNumberKey" visibleDownArrow="true" >
<option value="1">1</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
</select>
</td>
</tr>
<script language="JavaScript" type="text/javascript">
djConfig.searchIds.push("resultAction_yourLuckyNumber");</script>
Struts 2 <s:autocompleter>示例
<s:autocompleter>标记的完整示例,当用户在相应的文本框中键入内容时,会生成下拉建议列表。
1. pom.xml
下载Struts 2 dojo依赖库。
pom.xml
//...
<!-- Struts 2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.1.8</version>
</dependency>
<!-- Struts 2 Dojo Ajax Tags -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-dojo-plugin</artifactId>
<version>2.1.8</version>
</dependency>
//...
2.动作课
动作类,用于生成“ 自动完成程序 ”组件的Web框架选项列表。
AutoCompleterAction.java
package com.mkyong.common.action;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionSupport;
public class AutoCompleterAction extends ActionSupport{
private List<String> webframeworks = new ArrayList<String>();
private String yourFavWebFramework;
private String yourLuckyNumber;
public AutoCompleterAction(){
webframeworks.add("Spring MVC");
webframeworks.add("Struts 1.x");
webframeworks.add("Struts 2.x");
webframeworks.add("JavaServer Faces (JSF)");
webframeworks.add("Google Web Toolkit (GWT)");
webframeworks.add("Apache Wicket");
webframeworks.add("Apache Click");
webframeworks.add("Apache Cocoon");
webframeworks.add("JBoss Seam");
webframeworks.add("Stripes");
webframeworks.add("Apache Tapestry");
webframeworks.add("Others");
}
public String getYourLuckyNumber() {
return yourLuckyNumber;
}
public void setYourLuckyNumber(String yourLuckyNumber) {
this.yourLuckyNumber = yourLuckyNumber;
}
public String getYourFavWebFramework() {
return yourFavWebFramework;
}
public void setYourFavWebFramework(String yourFavWebFramework) {
this.yourFavWebFramework = yourFavWebFramework;
}
public List<String> getWebframeworks() {
return webframeworks;
}
public void setWebframeworks(List<String> webframeworks) {
this.webframeworks = webframeworks;
}
public String display() {
return NONE;
}
}
3.结果页
通过“ <s:autocompleter> ”标签呈现“ autocompleter ”组件,并通过Java列表和OGNL生成自动下拉建议列表。
autocompleter.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<html>
<head>
<sx:head />
</head>
<body>
<h1>Struts 2 autocompleter example</h1>
<s:form action="resultAction" namespace="/" method="POST" >
<sx:autocompleter label="What's your lucky number?"
name="yourLuckyNumber" autoComplete="false"
list="{'1','12','13','14','21','22','23','24',
'31','32','33','34','41','42','43','44'}" />
<sx:autocompleter label="What's your favorite web framework?"
list="webframeworks" name="yourFavWebFramework" />
<s:submit value="submit" name="submit" />
</s:form>
</body>
</html>
result.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<body>
<h1>Struts 2 autocompleter example</h1>
<h2>
Lucky Number : <s:property value="yourLuckyNumber"/>
</h2>
<h2>
Web Appication Frameworks : <s:property value="yourFavWebFramework"/>
</h2>
</body>
</html>
3. struts.xml
全部链接〜
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="autoCompleterAction"
class="com.mkyong.common.action.AutoCompleterAction"
method="display">
<result name="none">pages/autocompleter.jsp</result>
</action>
<action name="resultAction"
class="com.mkyong.common.action.AutoCompleterAction" >
<result name="success">pages/result.jsp</result>
</action>
</package>
</struts>
4.演示
http:// localhost:8080 / Struts2Example / autoCompleterAction.action
这是另一个示例,该示例显示使用JSON数据为自动完成程序组件提供选择选项的列表-Struts 2自动完成程序+ JSON示例 。
参考
翻译自: https://mkyong.com/struts2/struts-2-autocompleter-example/