`
mipengchong
  • 浏览: 9719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Spirng mvc 与 displaytag

阅读更多

   项目中采用 spring 3.0 mvc 和 displaytat

 在displaytag中 每次翻页采用的是get方式,如果加上查询,displaytag会自动将参数拼装一个链接 ,以get的方式提交到后台。

 

如果你查询的是中文,问题出来了,这个参数就会以乱码的形式穿到后台,当你查询后分页 就会导致数据不能出现。。。 此时 ,就是程序员的悲剧了。

 

 

当时我解决这个问题的时候也是很费劲,一度怀疑springmvc的get方法,后来又怀疑displaytag的内部构件是否出现了我问题。曾经想过改displaytag..... 

 

后来网上说 改tomcat 的配置问题,这里我没有尝试,因为开发的容器是tomcat 那如果部署的服务器不是tomcat 那我该如何?

 

 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" URIEncoding="UTF-8"/>

 

 

这样改如果你有静态文件图片  比如 。。  [http://localhost:8080/community/images/我.jpg] 这样的路径就能准确的找到资源文件。。。。中文的“我”。这个并发主题,言归正传....

 

 

直接贴代码:

   <script type="text/javascript">
function submitForm(){
	var titles = encodeURIComponent(encodeURIComponent($("#titleName").val()));
	var status = $("#status").val();
	window.location.href='managerNotices?titleName='+titles+"&status="+status;
}  
  </script>

<div class="container">
	<div id="homepagecontent" >
					<div class="photo_list_top">
						<h2>社区公告 </h2>
					</div>
					
					<div class="community_type">
									<div class="selected_photo"><a href="#">社区公告</a></div>
									<div class="unselected_photo"><a href="manager/votes?page=1&size=15">社区投票</a></div>
									<div class="l"><img src="images/bqc_or.gif"></div>
					</div>
					
					<div class="massage_main">
					<form  name="form" style="padding:0 20px;width:760px;">
					<table class="editTable">
							<tr>
								<td width="20%" class="editTD01"><div align="right">标题名称:</div></td>
								<td width="30%" class="editTD02">
									<input id="titleName" name="titleName" value="${notice.title}"  />
								</td>
								<td width="20%" class="editTD01"><div align="right">类型:</div></td>
								<td width="30%" class="editTD02">
								<select id="status" name="status" style="width: 160px;">
									<option value="">--请选择--</option>
									<c:forEach items="${statuss}" var="status" varStatus="sta">
										<option value="${sta.index}"  ${notice.status eq status ? "selected=selected" : ""}>${status}</option>
									</c:forEach>
								</select>
								</td>							   
							</tr>
						</table>
						<table align="center" style="margin-bottom:10px;">
							<tr>
								<td><input type="button" value="查询" class="butn" onclick="javascript:submitForm();"></td>
								<td><input type="button" value="创建" class="butn" onclick="javascript:window.location.href='managerNotices?form';"></td>
							</tr>
						</table>
					</form>	
						<div class="community_left">
							<display:table name="noticeLists" id="noticeList"  class="editTable2" pagesize="15" sort="external" partialList="true" size="total" requestURI="">
								<display:column title="序号" style="width:30px;text-align:center;">${noticeList_rowNum}</display:column>
								<display:column property="title" title="标题" style="width:auto;" />
								<display:column property="status" title="状态" style="width:auto;"></display:column>
								<display:column property="messageStatus" title="草稿" style="width:auto;"></display:column>
								<display:column  title="创建时间" style="width:108px;"><fmt:formatDate value="${noticeList.createdTime}"   type="both"/></display:column>
								<display:column title="操作" style="width:108px;">
									<a href="<c:url value='managerNotices?show&id=${noticeList.id}'/>">查看</a> 
									<a href="<c:url value='managerNotices?form&id=${noticeList.id}'/>">修改</a> 
									<a href="#" onclick="javascript:del(${noticeList.id})">删除</a> 
								</display:column>
							</display:table>
						</div>
					</div>
	</div>
</div>

 

 

 

后来我 在这:

var titles = encodeURIComponent(encodeURIComponent($("#titleName").val()));

转码了两次.....

 

 

	@RequestMapping(method=RequestMethod.GET)
	public String list(HttpServletRequest request,HttpServletResponse response,Notice notice, Model uiModel){
		String pageIndexName = new ParamEncoder("noticeList").encodeParameterName(TableTagParameters.PARAMETER_PAGE);
		int pageIndex = ServletRequestUtils.getIntParameter(request,pageIndexName, 1);
		
		//获得当前登录的用户
		Long customerId = (Long) request.getSession().getAttribute(WebConfig.CUSTOMER_ID);
		Publisher publisher = null;
		if(customerId != null && !"".equals(customerId)){
			publisher = Publisher.findPublisher(customerId);
		}
	
		String title =request.getParameter("titleName");
		if(title != null && !"".equals(title.trim())){
			try {
//				title = new String(title.getBytes("ISO-8859-1"),"UTF-8");
				title=java.net.URLDecoder.decode(title,"UTF-8");/*需要处理异常*/
				notice.setTitle(title);
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}
		//获得这个社区下 所有的公告	
		PageResult pageResult =  Notice.findNotics(notice.getTitle(),null,notice.getStatus(),notice.getUptown(),notice.getCommunity(),pageIndex, WebConfig.PER_PAGE);
		uiModel.addAttribute("noticeLists", pageResult.getItems());
		uiModel.addAttribute("total",pageResult.getTotal());
		uiModel.addAttribute("notice",notice);
		uiModel.addAttribute("statuss",AuditStatus.values());
		return "manager/notice/list";
	}
	

 

 

 

String title =request.getParameter("titleName");
		if(title != null && !"".equals(title.trim())){
			try {
//				title = new String(title.getBytes("ISO-8859-1"),"UTF-8");
				title=java.net.URLDecoder.decode(title,"UTF-8");/*需要处理异常*/
				notice.setTitle(title);
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
		}

 

这一款就是就是转码的过程。。  我为什么想分享这样一篇文章来说明这样一件简单的事情?  只因当初我在这里走了弯路,我也知道是转码的问题 ,一时间居然不知道在那去转码,曾经嗨怀疑过spring 的get方式  以及  displaytag 对中文的支持.....

 

 

 

呵呵 方法论了。。。  欢迎加我q   125218619 讨论这个问题 或者 进入我的群讨论java的种种问题 :84436262 Java生活 部落

 http://url.cn/LIRAm2
分享中成长,交流中交往

大数据资料共享。

 

 

 

 

分享到:
评论
3 楼 aaronuu 2011-12-15  
转两次干啥?为何   var titles = encodeURIComponent(encodeURIComponent($("#titleName").val())); 
2 楼 aaronuu 2011-12-15  
麦总!~~~~啊啊哈哈哈哈哈
1 楼 mipengchong 2011-08-15  
欢迎留言。。

相关推荐

    displaytag-1.2-bin&displaytag-1.2-src Java分页组件/插件

    "Java分页组件"和"Java分页插件"标签表明DisplayTag是专门针对Java Web应用设计的,它可以作为MVC框架(如Spring MVC)的一个插件,无缝集成到现有的项目架构中。DisplayTag不仅支持基本的分页,还提供了诸如国际化...

    displaytag

    在实际应用中,DisplayTag通常与模型-视图-控制器(MVC)框架集成,例如Spring MVC或Struts。开发人员可以使用DisplayTag的标签来绑定数据源,如JavaBean、List、Map等,然后在JSP页面上直接使用这些标签来展示数据...

    displaytag-1.1.rar_displaytag

    6. **集成**:DisplayTag很容易与其他框架集成,如Struts、Spring MVC等,提供了一致的视图层解决方案。 7. **文档和社区**:DisplayTag项目有详细的文档和活跃的社区支持,开发者可以在这里找到解决方案和最佳实践...

    displaytag,pager-taglib 分页包

    这两个库都是基于JSP标签库(Tag Library)实现的,可以方便地集成到Spring、Struts等MVC框架中。 **Displaytag** Displaytag是一个开源的表格和分页显示标签库,它提供了许多高级特性,如排序、分页、导出、样式...

    dispalytag demo

    如果项目使用了Spring MVC,DisplayTag可以与之完美结合。数据模型可以通过ModelAndView或者Model对象传递到视图层。 6. **自定义标签行为**: DisplayTag允许开发者通过实现`DisplayTagExportView`接口来自定义...

    Struts_Spring_Hibernate

    Spring MVC是Spring框架的一个子项目,用于构建Web应用程序,它与Struts类似,但更为灵活且功能强大。 **Hibernate** 是一个对象关系映射(ORM)框架,简化了Java应用程序与数据库之间的交互。Hibernate-release-...

    displaytag 分页的简单例子(附源代码)

    例如,在Spring MVC中,你的控制器可能如下所示: ```java @Controller public class ListController { @RequestMapping("/list") public ModelAndView list(@RequestParam int page, @RequestParam int ...

    Structs+Spring+Hibernate框架所需jar包下载

    - Spring MVC是Spring提供的Web框架,与Struts类似,用于构建MVC结构的Web应用。 - Spring Boot简化了Spring应用的初始化和配置,可以快速启动开发。 - Spring Security提供了一套完整的安全解决方案,包括认证和...

    displaytag.rar java数据分页驱动

    DisplayTag是Java Web开发中的一款强大且功能丰富的开源表格标签库,它为处理HTML表格提供了很多便利,尤其在数据分页方面表现突出。...在实际项目中,结合其他MVC框架(如Spring MVC)使用,能够更好地发挥其优势。

    Display Tag

    在实际项目中,Display Tag 可以很好地与Spring MVC、Hibernate等框架集成,进一步提升开发效率。对于处理大量数据的Web应用,Display Tag 是一个非常实用的工具,能够帮助开发者快速构建高效、响应式的数据展示界面...

    diaplayTag学习资料

    DisplayTag常用于Spring MVC、Struts等MVC框架,与Hibernate、MyBatis等持久层框架结合,构建企业级Web应用。它简化了数据展示的复杂性,提高了开发效率。 7. **学习资源** 官方网站...

    Struct.Hibernate.DisplayTag标签.js.Div.css.第4讲(zk原创).rar

    1. **Structs**:Structs 是一个基于Spring MVC的Java Web开发框架,它简化了MVC模式的实现,提供了丰富的标签库和强大的表单处理能力。Structs 提供了一种模块化的方式来组织应用程序,使其更易于维护和扩展。 2. ...

    SSH泛型DAO+Proxool+DisPlayTag+Jquery easyui

    - Struts2:提供了一个强大的MVC结构,通过Action和Result进行业务逻辑处理与页面跳转。它支持拦截器、国际化、异常处理等特性,使应用更具扩展性和可维护性。 - Spring:Spring框架的核心是IoC(Inversion of ...

    酒店客房管理系统(毕业设计) struts + spring + ibaits2.0

    这个系统利用了MVC(Model-View-Controller)架构模式,其中Struts作为控制器层,Spring作为业务逻辑层,而iBatis2.0作为数据访问层。以下是对各个技术组件的详细说明: 1. **Struts**:Struts 是一个基于MVC设计...

    Struts2+Spring +Hibernate的整合

    在实际开发中,SSH整合能够提供一个强大的Java Web开发基础,但随着技术的发展,现代的Web框架如Spring Boot和Spring MVC+Spring Data JPA等已逐渐取代SSH,因为它们更简洁,开箱即用,且支持更多现代特性。...

    [浪曦][原创][A335]Struct+Hibernate+DisplayTag标签+js+Div+css 第1讲(zk原创).rar

    1. **Structs**: Structs 是一个基于Spring MVC的轻量级Web框架,它简化了Web应用的开发过程,提供了丰富的标签库和控制器支持。Structs 提供了模型-视图-控制器(MVC)架构模式,使得开发者可以更加清晰地组织代码...

    sturts,hibernate ,spring框架集成

    这三个框架分别负责不同的职责:Struts处理MVC(模型-视图-控制器)架构,Hibernate管理数据库持久化,而Spring提供依赖注入和面向切面编程等服务。下面将详细阐述SSH框架集成的过程、顺序以及各自的角色。 首先,...

    Spring-Hibernate的通过标签分页源码

    在Spring MVC中,这通常是一个`@Controller`注解的类中的方法,比如`ListController`: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype....

    Spring+Hibernate+Struts实现分页

    6. **优化与扩展**:为了提高性能,可以考虑缓存策略,例如使用Spring的Cache Abstraction对不常改变的数据进行缓存。另外,可以引入MyBatis等其他ORM工具,或者使用Spring Data JPA,以简化数据库操作。对于大数据...

Global site tag (gtag.js) - Google Analytics