rethink

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            11 隨筆 :: 0 文章 :: 16 評論 :: 0 Trackbacks
          根據官網的快速開始指南SpringSide 復活兩篇文章,簡單了解ss3的大致框架,并成功建立基于ss3風格的項目。

          但其中也遇到幾個小問題,首先就是Maven,由于以前安裝過可能有些配置被改變了導致無法正常執行quickstart-all-in-one.bat。后來直接指定ss3中的maven目錄就可以了,懷疑是maven\conf\settings.xml問題。另外一個問題就是在建立自己的項目后,執行copy-jar.bat總是不成功(有功夫要好好研究一下maven),最后只好直接把examples\mini-web\lib和examples\mini-web\webapp\WEB-INF\lib下的jar都拷過來。

          建好了項目準備自己添加點功能試試,可是沒有找到能夠自動生成代碼的腳本,只好自己一點點添加,還好ss3在配置方面簡便了許多。

          1、生成實體類
          @Entity
          @Table(name 
          = "dict_nation")
          @Cache(usage 
          = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
          public class Nation extends IdEntity {

              
          private String name;

              
          public String getName() {
                  
          return name;
              }

              
          public void setName(String name) {
                  
          this.name = name;
              }

              @Override
              
          public String toString() {
                  
          return ToStringBuilder.reflectionToString(this);
              }

          }
          2、生成dao、service類
          @Repository
          public class NationDao extends HibernateDao<Nation, Long> {

              
          public Nation loadByName(String name) {
                  
          return findUniqueByProperty("name", name);
              }
          }

          @Service
          @Transactional
          public class NationManager extends EntityManager<Nation, Long> {

              @Autowired
              
          private NationDao nationDao;

              @Override
              
          public NationDao getEntityDao() {
                  
          return nationDao;
              } 
              
              
          public Nation getNation(String name) {
                  
          return nationDao.loadByName(name);
              }
              
          }
          以上操作都不用修改配置文件,真是很方便。

          3、生成web相關文件
          @SuppressWarnings("serial")
          @Results( { @Result(name 
          = CRUDActionSupport.RELOAD, location = "nation.action", type = "redirect") })
          public class NationAction extends CRUDActionSupport<Nation> {

              @Autowired
              
          private NationManager nationManager;

              
          // 基本屬性
              private Nation entity;
              
          private Long id;
              
          private List<Nation> allNations;

              
          public Nation getModel() {
                  
          return entity;
              }

              @Override
              
          protected void prepareModel() throws Exception {
                  
          if (id != null) {
                      entity 
          = nationManager.get(id);
                  } 
          else {
                      entity 
          = new Nation();
                  }
              }

              
          public void setId(Long id) {
                  
          this.id = id;
              }

              
          public List<Nation> getAllNations() {
                  System.out.println(
          "test");
                  
          return allNations;
              }

              @Override
              
          public String delete() throws Exception {
                  
          try {
                      nationManager.delete(id);
                      addActionMessage(
          "刪除角色成功");
                  } 
          catch (ServiceException e) {
                      logger.error(e.getMessage(), e);
                      addActionMessage(e.getMessage());
                  }
                  
          return RELOAD;
              }

              @Override
              
          public String list() throws Exception {
                  allNations 
          = nationManager.getAll();
                  
          return SUCCESS;
              }

              @Override
              
          public String input() throws Exception {
                  System.out.println(
          "test");
                  
          return INPUT;
              }

              @Override
              
          public String save() throws Exception {
                  nationManager.save(entity);
                  addActionMessage(
          "保存用戶成功");
                  
          return RELOAD;
              }

          }
          修改安全文件applicationContext-security.xml
                  <intercept-url pattern="/user/nation!save*" access="A_MODIFY_ROLE" />
                  
          <intercept-url pattern="/user/nation!delete*" access="A_MODIFY_ROLE" />
                  
          <intercept-url pattern="/user/nation*" access="A_VIEW_ROLE" />
          添加nation.jsp和nation-input.jsp文件
          <body>
          <div id="menu">
          <h3>
              
          <href="${ctx}/user/user.action">帳號列表</a>
              
          <href="${ctx}/user/role.action">角色列表</a> 
              
          <href="${ctx}/user/nation.action">國籍列表</a> 
              
          <href="${ctx}/j_spring_security_logout">退出登錄</a>
          </h3>
          </div>

          <div id="message"><s:actionmessage theme="mytheme"/></div>

          <div id="filter">你好,<%=SpringSecurityUtils.getCurrentUserName()%>.</div>

          <div id="listContent">
          <table>
              
          <tr>
                  
          <th><b>名稱</b></th>
                  
          <th><b>操作</b></th>
              
          </tr>

              
          <s:iterator value="allNations">
                  
          <tr>
                      
          <td>${name}</td>
                      
          <td>&nbsp; 
                          
          <security:authorize ifAnyGranted="A_MODIFY_ROLE">
                              
          <href="nation!input.action?id=${id}">修改</a>
                              
          <href="nation!delete.action?id=${id}">刪除</a>
                          
          </security:authorize>
                      
          </td>
                  
          </tr>
              
          </s:iterator>
          </table>
          </div>

          <div id="footer">
              
          <security:authorize ifAnyGranted="A_MODIFY_ROLE">
                  
          <href="nation!input.action">增加新國籍</a>
              
          </security:authorize>
          </div>

          <div id="comment">本頁面為單純的白板,各式Table Grid組件的應用見Showcase項目(開發中).</div>
          </body>

          <body>
          <h3><s:if test="id == null">創建</s:if><s:else>修改</s:else>角色</h3>
          <div id="inputContent">
          <form id="inputForm" action="nation!save.action" method="post">
          <input type="hidden" name="id" value="${id}" />
          <table>
              
          <tr>
                  
          <td>國籍:</td>
                  
          <td><input type="text" name="name" size="40" value="${name}" class="required"/></td>
              
          </tr>
              
          <tr>
                  
          <td colspan="2">
                      
          <input type="submit" value="提交" />&nbsp; 
                      
          <input type="button" value="取消" onclick="history.back()"/>
                  
          </td>
              
          </tr>
          </table>
          </form>
          </div>
          </body>
          完成。重新部署、運行,可以執行對國籍的增刪改查。

          雖然最終成功使用,但是其中遇到一個非常惱火的事情。由于定義的表名是dict_nation所以后面相關的名稱都是DictNation和dictNation,結果新增的功能無法實現,懷疑是違反了某個框架的命名規范,導致無法實現,有空再深入學習ss3。

          posted on 2009-03-20 17:54 rethink 閱讀(4382) 評論(3)  編輯  收藏 所屬分類: web framework

          評論

          # re: 學習springside3(一) 2009-03-20 19:33 super2
          <springside.version>3.1.0</springside.version>
          <spring.version>2.5.6</spring.version>
          <hibernate.version>3.3.1.GA</hibernate.version>
          <struts2.version>2.1.6</struts2.version>
          <cxf.version>2.1.3</cxf.version>
          <spring-security.version>2.0.4</spring-security.version>
          <slf4j.version>1.5.6</slf4j.version>

          版本有問題,和JAR包不一致,我用的時候也是無法生成,后來改動pom-parent.xml就好了  回復  更多評論
            

          # re: 學習springside3(一) 2009-03-22 12:57 海邊沫沫
          最新的SpringSide3.1.2 all in one是有點問題,把生成的項目中的pom-parent.xml中的springside.version修改成3.1.2,然后再運行copy-jar.bat就行了。  回復  更多評論
            

          # re: 學習springside3(一) 2009-03-24 10:37 rethink
          謝謝樓上兩位的解釋。。。。。。  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 西畴县| 兴国县| 绥阳县| 宜兰县| 天等县| 和龙市| 雷州市| 两当县| 梓潼县| 津市市| 灵川县| 湘阴县| 玛沁县| 文山县| 精河县| 三台县| 北碚区| 海阳市| 睢宁县| 宕昌县| 新竹县| 民权县| 大同县| 安顺市| 沛县| 云浮市| 拜泉县| 普兰县| 盐亭县| 法库县| 石渠县| 金秀| 蒙阴县| 武隆县| 泸定县| 通河县| 桦甸市| 浦东新区| 潼南县| 弥勒县| 陆河县|