`
sunjm999
  • 浏览: 5274 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

基于struts2+spring2+ibatis2 的文章系统(续二)

阅读更多
根据客户要求,集成论坛系统。ok 开工。
论坛就选开源的mvnForum,我看用的人还不少。
集成的第一件事就是汉化mvnForum.前台没有话说,OOB的就支持中文。关键是管理页面需要汉化。

一 资源文件汉化
在网上找了很久,有网友汉化的资源文件。但都是针对1.0.2版本的。最新的1.1版好像加了不少功能,
资源文件里加了好多条目在1.0.2里没有。没办法只好自立更生了。

二 freemarker模板汉化
mvnForum使用了几个FTL模板,其中viewmemberpermissions.ftl里有hardcode,要改成国际化。
<#assign i = 1 >
<#list Rows as row>
  <#if row.RowType == "Header">
    <table class="tborder" width="95%" cellspacing="1" cellpadding="3" align="center">
      <tr class="portlet-section-header" align="center">
        <td nowrap>${bundle("suncms.Forum")}</td>
        <td nowrap>${bundle("suncms.Forum.Edit")}</td>
        <td nowrap>${bundle("suncms.Forum.Delete")}</td>
        <td nowrap>${bundle("suncms.Forum.Assign")}</td>
   
        <td nowrap>${bundle("suncms.Thread")}</td>
        <td nowrap>${bundle("suncms.Thread.Add")}</td>
        <td nowrap>${bundle("suncms.Thread.Moderate")}</td>
   
        <td nowrap>${bundle("suncms.Post")}</td>
        <td nowrap>${bundle("suncms.Post.Read")}</td>
        <td nowrap>${bundle("suncms.Post.Add")}</td>
        <td nowrap>${bundle("suncms.Post.Edit_Own")}</td>
        <td nowrap>${bundle("suncms.Post.Edit_Any")}</td>
        <td nowrap>${bundle("suncms.Post.Delete")}</td>
   
        <td nowrap>${bundle("suncms.Attachment")}</td>
        <td nowrap>${bundle("suncms.Attachment.Add")}</td>
        <td nowrap>${bundle("suncms.Attachment.Get")}</td>
   
        <td nowrap>${bundle("suncms.Poll")}</td>
        <td nowrap>${bundle("suncms.Poll.Add")}</td>
        <td nowrap>${bundle("suncms.Poll.Edit_Own")}</td>
        <td nowrap>${bundle("suncms.Poll.Edit_Any")}</td>
        <td nowrap>${bundle("suncms.Poll.Delete")}</td>
      </tr>
  </#if>
 
  <#if row.RowType == "Category">
    <#assign i = 1 >
    <tr class="portlet-section-subheader">
      <td colspan="21">
        <b>${row.CategoryName}</b>
      </td>
    </tr>
    <#if row.Empty >
    <tr class="portlet-section-body"><td colspan="21" align="center">${row.no_forum}</td></tr>
    </#if>
  </#if>     
  <#if row.RowType == "Forum">
    <tr <#if i%2 == 1> class="portlet-section-body" <#else> class="portlet-section-alternate" </#if> align="center">
      <td align="left">${row.ForumName}</td>
      <td><@check permission=row.EditForum/></td>
      <td><@check permission=row.DeleteForum/></td>
      <td><@check permission=row.AssignForum/></td>
     
      <td class="messageTextBold">${bundle("suncms.Thread")} &raquo;</td>
      <td><@check permission=row.AddThread/></td>
      <td><@check permission=row.ModerateThread/></td>

      <td class="messageTextBold">${bundle("suncms.Post")} &raquo;</td>
      <td><@check permission=row.ReadPost/></td>
      <td><@check permission=row.AddPost/></td>
      <td><@check permission=row.EditOwnPost/></td>
      <td><@check permission=row.EditAnyPost/></td>
      <td><@check permission=row.DeletePost/></td>

      <td class="messageTextBold">${bundle("suncms.Attachment")} &raquo;</td>
      <td><@check permission=row.AddAttachment/></td>
      <td><@check permission=row.GetAttachment/></td>
     
      <td class="messageTextBold">${bundle("suncms.Poll")} &raquo;</td>
      <td><@check permission=row.AddPoll/></td>
      <td><@check permission=row.EditOwnPoll/></td>
      <td><@check permission=row.EditAnyPoll/></td>
      <td><@check permission=row.DeletePoll/></td>
    </tr>
    <#assign i = i+1> 
  </#if>
  <#if row.RowType == "Footer">  
    <#if row.checkNoCategory>
        <tr class="portlet-section-body">
          <td colspan="21" align="center">${row.no_category}</td>
        </tr>
    </#if>
    </table>
  </#if>
</#list> 
<#macro check permission>
  <#if permission>
    <font color="#008000">Yes</font>
  <#else>
    <font color="#FF0080">No</font> 
  </#if>
</#macro

对应的要修改ftlCategoryTreeListener.java,把国际化信息传到模板中
public void init(Template template) {
        this.template = template;
        html = new StringWriter();
        root = new HashMap();
        root.put("Rows", rows);
       
        ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("mvnForum_i18n");
        ResourceBundleModel rsbm = new ResourceBundleModel(RESOURCE_BUNDLE,new BeansWrapper());
        root.put("bundle", rsbm);
    }

三 权限管理的汉化
汉化参照http://www.shorelinesolution.com/forum/viewthread?thread=137 里做的。同样的他也是基于1.0.2 做的,他提供的代码直接在1.1里使用会报错,原因也是条目比1.1里的少。修改很简单,把1.1里的AbstractPermission类里的getDescription方法拷出来修改即可。

这时 权限管理界面都是中文了,但是有几个图片的ALT信息还是英文的,继续:
修改MyUtil。java中的getIndividualPermission方法,把hardcode的英文换成国际化。为了不影响其它代码,把该方法复制 改名一份。

public static StringBuffer getIndividualPermissionFsunCMS(int combinePers, boolean globalPermission,String localeName) throws BadInputException {

        StringBuffer indivialPermissions = new StringBuffer();
        int[] individualForumPermissionArray = null;
       
        Locale locale = null;
if(localeName.length()>2){
String language = localeName.substring(0,2);
String country = localeName.substring(3);
locale = new Locale(language, country);
} else {
locale = new Locale(localeName);
}

       
        switch (combinePers) {

        case MVNForumPermission.PERMISSION_SYSTEM_ADMIN:
            //indivialPermissions.append("This permission includes all individual permissions");
        String stmp=MVNForumResourceBundle.getString(locale, "suncms.permission.alt_all");
        indivialPermissions.append(stmp);
        break;

        case MVNForumPermission.PERMISSION_FORUM_ADMIN:
            if (globalPermission) {
                individualForumPermissionArray = MVNForumPermission.individualForumAdminPermissionArray;
            } else {
                individualForumPermissionArray = MVNForumPermission.individualForumAdminLimitPermissionArray;
            }
            break;

        case MVNForumPermission.PERMISSION_FORUM_MODERATOR:
            if (globalPermission) {
                individualForumPermissionArray = MVNForumPermission.individualForumModeratorPermissionArray;
            } else {
                individualForumPermissionArray = MVNForumPermission.individualForumModeratorLimitPermissionArray;
            }
            break;
           
        case MVNForumPermission.PERMISSION_POWER_USER:
            if (globalPermission) {
                individualForumPermissionArray = MVNForumPermission.individualPowerUserPermissionArray;
            } else {
                individualForumPermissionArray = MVNForumPermission.individualPowerUserLimitPermissionArray;
            }
            break;

        case MVNForumPermission.PERMISSION_NORMAL_USER:
            if (globalPermission) {
                individualForumPermissionArray = MVNForumPermission.individualNormalUserPermissionArray;
            } else {
                individualForumPermissionArray = MVNForumPermission.individualNormalUserLimitPermissionArray;
            }
            break;
           
        case MVNForumPermission.PERMISSION_LIMITED_USER:
            if (globalPermission) {
                individualForumPermissionArray = MVNForumPermission.individualLimitedUserPermissionArray;
            } else {
                individualForumPermissionArray = MVNForumPermission.individualLimitedUserLimitPermissionArray;
            }
            break;
           
        default:
            throw new BadInputException("This permission is invalid");
           
        } // end switch
       
        if (individualForumPermissionArray != null) {
            //indivialPermissions.append("This permission includes the individual permission: &lt;br /&gt;");
        String stmp=MVNForumResourceBundle.getString(locale, "suncms.permission.alt");
            indivialPermissions.append(stmp+" &lt;br /&gt;");
        indivialPermissions.append("&lt;ul&gt;");
            for (int i = 0; i < individualForumPermissionArray.length; i++) {
                //indivialPermissions.append("&lt;li&gt;").append(AbstractPermission.getDescription(individualForumPermissionArray[i])).append("&lt;/li&gt;");
            indivialPermissions.append("&lt;li&gt;").append(LocalizedPermission.getDescription(individualForumPermissionArray[i],localeName)).append("&lt;/li&gt;");
            }
            indivialPermissions.append("&lt;/ul&gt;");
        }
       
        return indivialPermissions;
    }


四 修改JSP页面。
这个很简单,看到hardcode的英文,就用<fmt:message key="mvnforum.common.not_applicable"/> 语句换成国际化即可。

至此汉化完成。下一步集成用户。

相关文件:




分享到:
评论
5 楼 junjie.li1985 2008-07-22  
感觉JForum还不错,如果支持从其他论坛系统迁移数据就好了。
4 楼 junjie.li1985 2008-07-22  
感觉JForum还不错,如果支持从其他论坛系统迁移数据就好了。
3 楼 sentom 2008-06-30  
当然是JForum好,可以参考这里的介绍:http://www.javaread.com/article/show/94
2 楼 dyhjjk 2008-05-31  
目前见到的最好的mvnforum模板
http://bbs.jnvideo.cn
1 楼 fch0402 2008-05-21  
推荐下Jforum,很不错的东西,前台和后台都支持中文,而且功能也很强大,

相关推荐

    struts2+spring+Ibatis框架包

    这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于MVC(Model-View-Controller)模式的Web应用。 Struts2作为MVC框架,负责处理应用程序的控制逻辑。它通过Action类和配置文件定义...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    struts2+spring+ibatis+mysql

    "Struts2+Spring+Ibatis+MySQL" 是一个经典的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。这个组合集成了强大的MVC(Model-View-Controller)框架Struts2、依赖注入与面向切面编程的Spring框架、...

    struts2+spring+mybatis+easyui的实现

    同时,Spring与Struts2可以通过Spring-Struts2插件无缝集成,使得Action可以直接由Spring管理,增强了系统的可测试性。 **MyBatis** 是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提供了更灵活的SQL操作...

    struts2+spring3+ibatis项目整合案例

    Struts2、Spring3和iBATIS是Java Web开发中常用的三大框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。在这个“struts2+spring3+ibatis项目整合案例”中,我们将深入探讨这三个框架如何...

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第二部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3 SSH

    struts2+spring2+ibatis

    Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们的集成应用可以构建出高效、灵活的后端系统。Struts2作为MVC(Model-View-Controller)架构的一部分,主要负责处理HTTP请求和展示视图;Spring...

    Struts2+Spring2+iBatis2整合的例子

    Struts2、Spring和iBatis是Java Web开发中三个非常重要的框架,它们分别负责表现层、业务层和数据访问层。将这三个框架整合在一起,可以实现MVC(Model-View-Controller)架构,提高应用的灵活性和可维护性。 **...

    Struts2+spring+ibatis三大框架整合实例

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层和服务数据访问层。本文将详细介绍这三个框架如何整合,以及在实际项目中如何运用。 首先,Struts2作为表现...

    Struts2+Spring+Ibatis整合的简单人事管理系统

    Struts2+Spring+Ibatis整合的简单人事管理系统 没分了,转载过来的,有需要的看看吧,我觉得不错~~

    struts2+hibernate+spring+ibatis 小实例

    struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+hibernate+spring+ibatis 小实例struts2+...

    struts2 + spring + ibatis 实例

    struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例 struts2 + spring + ibatis 实例

    spring+struts2+ibatis整合的jar包

    在Java Web开发中,Spring、Struts2和iBatis是三个非常重要的框架,它们各自在不同的层面上提供了强大的功能。Spring是一个全面的后端应用框架,提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等功能;Struts...

    Struts2+Spring2+iBatis2+MySQL的完整示例

    开发环境说明 ...本示例完整地结合Struts2+Spring2+iBatis2+MySQL5,演示了一个用户表的增、删、改、查。 想完整学习Struts2+Spring+iBatis的同仁,可以在这个例子中学习或模仿最基本也是最核心的技术要点。

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3(第一部分)

    Struts1.2+Struts2.1.6+spring 2.0+hibernate3.1+Ibatis2.3内个框架的集成

    struts2+spring+ibatis的小demo

    Struts2、Spring和iBatis是Java Web开发中经典的三大框架,它们组合起来可以构建出高效、可维护的企业级应用程序。在这个“struts2+spring+ibatis”的小demo中,我们将深入探讨这三个框架的核心功能以及它们如何协同...

    struts2+spring+ibatis项目实例

    通过Struts2处理请求,Spring进行依赖管理和事务控制,以及iBatis处理数据库操作,我们可以构建出高效、模块化且易于维护的系统。在学习这个实例时,应重点理解三者之间的整合方式,以及如何利用它们各自的优势来...

    maven3+struts2+spring+ibatis

    maven3+struts2+spring+ibatis,本来是用maven3+struts2+spring+hibernate但考虑到hibernate在多表级联查询的时候执行效率不高,所以改用性能更好不过sql比较麻烦的的ibatis,本项目只有登录和插入数据,仅供参考: ...

    struts2+spring+ibatis整合项目实例

    Struts2、Spring和iBatis是Java Web开发中常用的三个开源框架,它们各自负责不同的职责,协同工作可以构建出高效、松耦合的Web应用。这个整合项目实例旨在展示如何将这三个框架集成到一起,以实现更强大的功能。 1....

    struts2 + spring + ibatis 整合例子

    Struts2、Spring和iBatis是Java Web开发中常用的三大框架,它们分别负责MVC模式中的Action层、业务逻辑层以及数据访问层。将这三个框架整合在一起,可以构建出高效、灵活且易于维护的Web应用程序。下面我们将详细...

Global site tag (gtag.js) - Google Analytics