Struts 2与AJAX(第一部分)(三)

42 篇文章 0 订阅

这些标志包括:<s:a />、<s: submit />、<s:autocompleter />和<s:tree />等,下面我将分别讲解。

1、<s:a />和<s:submit />

这两个标志方便了我们的调用XHR实现AJAX,所以上面的HTML如果使用了这两标志将会变得更简单,因为我们不用再去理会繁锁的XHR创建和设定的工作。下面是示例代码:

<%@ page language="java" contentType="text/html; charset=utf-8"
      pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>JSON Plugin</title>
        <s:head theme="ajax" />
        <script type="text/javascript">                    
          dojo.addOnLoad(function() {
              dojo.event.topic.subscribe('retrieveBook', this, function(data, type, e){
                if(type == 'load') {
                      showBook(data);
                  } else if(type == 'error') {
                      alert('Can not retrieve the book');
                  }
              });
          });
        
        function showBook(strBook) {
            var oBook = eval('(' + strBook + ')');
            var bookHolder = document.getElementById('bookHolder');
            var sBook = '<p><b>ISBN: </b>' + oBook.ISBN + '</p>';
              sBook += ('<p><b>Title: </b>' + oBook.title + '</p>');
              sBook += ('<p><b>Price: </b>$' + oBook.price + '</p>');
              sBook += ('<b><i>Comments: </i></b><hr/>');
            for(i = 0; i < oBook.comments.length; i++) {
                  sBook += ('<p><b>#' + (i + 1) + ' </b>' + oBook.comments[i] + '</p>');
              }
              bookHolder.innerHTML = sBook;
          }
        </script>
    </head>
    <body>
        <s:url id="bookUrl" value="/JsonPlugin.action" />
        <s:submit href="%{bookUrl}" theme="ajax" indicator="indicator"
              value="Retrieve Book" align="left" notifyTopics="retrieveBook" />
        <s:a theme="ajax" href="%{bookUrl}" indicator="indicator"
              notifyTopics="retrieveBook">Retrieve Book</s:a>
        <img id="indicator"
              src="${pageContext.request.contextPath}/images/indicator.gif"
              alt="Loading " style="display:none" />
        <div id="bookHolder"></div>
    </body>
</html>清单5 WebContent/LinkButton.jsp

可能上述代码还不够简洁,因为我将HTML格式化的工作都放在Javascript中完成。但如果你的XHR返回的是HTML片段,你可以简单地将<s:a />或<s:submit />的“targets”属性设为“bookHolder”即可,详情大家可以参考Struts 2 Showcase。至于返回HTML片段,可以通过Action + Freemaker完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值