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 阅读(4372) 评论(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
谢谢楼上两位的解释。。。。。。  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: