powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемма кодировки ModelAttribute Controller'а
2 сообщений из 2, страница 1 из 1
Проблемма кодировки ModelAttribute Controller'а
    #38576939
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Помогите разобраться с правильной кодировкой(локализацией?) 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
Проблемма кодировки ModelAttribute Controller'а
    #38577005
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам задал вопрос - сам ответил...:\
Нужно добавить в 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
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемма кодировки ModelAttribute Controller'а
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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