Struts 2与AJAX(第一部分)
在当今——Web 2.0概念铺天盖地的Internet环境下,简易的AJAX集成对于一个成功的WEB框架来说是不可或缺的。因此,Struts 2其中的一个重要的功能(Feature)就是“First-class AJAX support - Add interactivity and flexibility with AJAX tags that look and feel just like standard Struts tags(大意:一流的AJAX支持——通过AJAX标志增加互动性和灵活性,而且使用这些AJAX标志与普通的Struts标志同样简单)”。实现原理
基于不重新发明轮子的原则,Struts 2并没有开发新的AJAX框架,而是使用时下Java EE平台中比较流行的AJAX框架——Dojo和DWR。
最近在Musachy Barroso等同志的无私奉献下,开发了Struts 2的JSON插件(Plugin),极大地方便了我们输出JSON结果(Result)。
JSON插件(Plugin)
在Struts 2的showcase中的AJAX部分,JSON的结果输出是通过Freemaker模板实现。这种方法在简易性和灵活性上都比不上JSON插件,所以JSON插件值得向大家五星推荐。
下面让我们看一个JSON插件的例子。
首先到以下网址http://code.google.com/p/jsonplugin/downloads/list下载JSON插件的JAR包,并将其加入你的WebContent\WEB-INF\lib下。
接下是本例子的Action代码:
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee;">http://www.blogjava.net/Images/OutliningIndicators/None.gifpackage tutorial;
http://www.blogjava.net/Images/OutliningIndicators/None.gif
http://www.blogjava.net/Images/OutliningIndicators/None.gifimport java.util.ArrayList;
http://www.blogjava.net/Images/OutliningIndicators/None.gifimport java.util.List;
http://www.blogjava.net/Images/OutliningIndicators/None.gif
http://www.blogjava.net/Images/OutliningIndicators/None.gifimport com.googlecode.jsonplugin.annotations.JSON;
http://www.blogjava.net/Images/OutliningIndicators/None.gifimport com.opensymphony.xwork2.ActionSupport;
http://www.blogjava.net/Images/OutliningIndicators/None.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gifpublic class JsonPluginAction extends ActionSupport http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif private static final long serialVersionUID = -6784977600668791997L;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif private int bookId;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif private String title;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif private double price;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif private List<String> comments;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif private transient String secret1;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif private String secret2;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif @JSON(name="ISBN")
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public int getBookId() http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif return bookId;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public void setBookId(int bookId) http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif this.bookId = bookId;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public List<String> getComments() http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif return comments;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public void setComments(List<String> comments) http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif this.comments = comments;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public double getPrice() http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif return price;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public void setPrice(double price) http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif this.price = price;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public String getTitle() http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif return title;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public void setTitle(String title) http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif this.title = title;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif @Override
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif public String execute() http://www.blogjava.net/Images/dot.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif bookId = 15645912;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif title = "Max On Java";
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif price = 0.9999d;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif comments = new ArrayList<String>(3);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif comments.add("It's no bad!");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif comments.add("WOW!");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif comments.add("No comment!");
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif secret1 = "You can't see me!";
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif secret2 = "I am invisible!";
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif return SUCCESS;
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif }
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif}
页:
[1]