Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемма кодировки ModelAttribute Controller'а / 2 сообщений из 2, страница 1 из 1
03.03.2014, 15:20
    #38576939
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемма кодировки ModelAttribute Controller'а
Добрый день!

Помогите разобраться с правильной кодировкой(локализацией?) ModelAttribute Controller'а
Есть контроллер:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
@Controller
@SessionAttributes("filters")
public class OutrunController {
	
	private static final Logger logger = LoggerFactory.getLogger(OutrunController.class);

	@Autowired
	private OutrunDao outrunDao;
	
	@RequestMapping(value={"/", "/list"}, method = RequestMethod.GET, produces = "application/x-www-form-urlencoded;charset=utf-8")
	public String listGet(Model model, Locale locale)	{
		Date date = new Date();
		DateFormat dateTimeFormat = DateFormat.getDateTimeInstance();
		String now = dateTimeFormat.format(date);
		logger.info("GET outruns: "+now);
		
		model.addAttribute("serverTime", dateTimeFormat.format(date));

		OutrunFilters filters;
		if (!model.containsAttribute("filters"))
			model.addAttribute("filters", filters = new OutrunFilters());
		else
			filters = (OutrunFilters)model.asMap().get("filters");
		
		if (filters.getDate()==null || filters.getDate()=="") 
			filters.setDate(date);
		if (filters.getCls()==null || filters.getCls()=="")
			filters.setCls(OutrunFilters.CLASS_LOADING);
		logger.info("Filter: "+filters.toString());
		
		model.addAttribute("filters", filters);
		model.addAttribute("classList", OutrunFilters.classList);
		model.addAttribute("cityList", outrunDao.getCitys());
		
		List<Outrun> outruns = outrunDao.findAll(filters);
		model.addAttribute("outruns", outruns);		
		logger.info("No. of outruns: " + outruns.size());
		
		return "list";
		
	}

	@RequestMapping(value={"/", "/list"}, method = RequestMethod.POST, produces = "application/x-www-form-urlencoded;charset=utf-8")
	public String listPost(Model model, @ModelAttribute("filters") OutrunFilters filters,
			Locale locale) {
		logger.info("POST outruns with locale:"+locale);
		logger.info("Filter: "+filters.toString());		
		return "redirect:/list";		
	}
	
}



Который работает с представлением list.jspx:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<div xmlns:jsp="http://java.sun.com/JSP/Page" 
     xmlns:c="http://java.sun.com/jsp/jstl/core" 
     xmlns:spring="http://www.springframework.org/tags"
     xmlns:form="http://www.springframework.org/tags/form"     
     version="2.0">
    <jsp:directive.page contentType="text/html;charset=UTF-8"/>
    <jsp:output omit-xml-declaration="yes"/>  
	
    <script type="text/javascript">
    $(function(){ 
        $('#date').datepicker({ 
            dateFormat: 'dd.mm.yy',
            changeYear: true
        });        
    });
    </script>

    <div id="outrunFilters">
    <form:form modelAttribute="filters" id="outrunFiltersForm" method="post">
    
		<table border = "0">
    		<tr>
        		<td><b>
        			<form:label path="date">Дата:</form:label>
        		</b></td>
        		<td>
        			<form:input path="date" id="date"/>
        		</td>
    		</tr>
    		<tr>		    
        		<td><b>
        			<form:label path="cls">Вид:</form:label>
        		</b></td>
        		<td>
		            <form:select path = "cls">
		            	<form:options items="${classList}" />
		            </form:select>
		        </td>
    		</tr>        
        		<td><b>
        			<form:label path="city">Город:</form:label>
        		</b></td>
        		<td>
		            <form:select path = "city">
		            	<form:options items="${cityList}" />
		            </form:select>
		        </td>
    		<tr>		    
    		</tr>        
        		<td><b>
        			<form:label path="name">Название файла:</form:label>
        		</b></td>
        		<td>
        			<form:input path="name" id="name"/>
        		</td>
    		<tr>		    
    		</tr>        
    		<tr>
        		<td colspan = "2"><input type = "submit" value = "Фильтр"/></td>
    		</tr>
    	</table>
	</form:form>   
	</div>
	
	<div id="outruns">
	<table>
    	<thead>
    		<tr>
    			<th>Статус</th>
    			<th>Город</th>
    			<th>Название</th>
    			<th>Размер Mb</th>
    			<th>Формат</th>
    			<th>От.сторон</th>
    			<th>Развертка</th>
    			<th>EVSM</th>
    		</tr>
    	</thead>
    	<tbody>
    		<c:forEach items="${outruns}" var="outrun">
	    		<tr>
	    			<td>${outrun.statusName}</td>
	    			<td>${outrun.city}</td>
	    			<td>${outrun.name}</td>
	    			<td>${outrun.sizeMb}</td>
	    			<td>${outrun.format}</td>
	    			<td>${outrun.aspect}</td>
	    			<td>${outrun.scanType}</td>
	    			<td>${outrun.evs}</td>
	    		</tr>
    		</c:forEach>
    	</tbody>
	</table>  
	</div>
    
</div>



При вводе в поле "Название файла" русского имени, получаем "абдакадабру":
Лог:
INFO : ru.FoxGSM.IOutruns.controllers.OutrunController - POST outruns with locale:ru
INFO : ru.FoxGSM.IOutruns.controllers.OutrunController - Filter: date=03.03.2014 class=1 city=0 name=????????

Что делать??
...
Рейтинг: 0 / 0
03.03.2014, 16:04
    #38577005
Lisichkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемма кодировки ModelAttribute Controller'а
Сам задал вопрос - сам ответил...:\
Нужно добавить в web.xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
...
	<filter>
        <filter-name>encoding-filter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>

    </filter>

    <filter-mapping>
        <filter-name>encoding-filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемма кодировки ModelAttribute Controller'а / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]