2013-08-22 4 views
0

У меня есть webapp весной 3 mvc. Дело в том, что у меня есть индексная страница с URL-адресом, когда пользователь нажимает на них, должен отображать другую страницу с информацией о выбранной информации. Теперь отображается страница сведений, но без какой-либо информации (на индексной странице создается модель с правильной переменной, но не в деталях контроллера - в режиме отладки). индекс метод контроллера:spring mvc mapping - отправить значение между контроллерами

@RequestMapping(value="/{site}", method = RequestMethod.GET) 
public String showDetails(@RequestParam(value = "site", required = true) String site, Model model){ 
    Catalog product = catalogEndpoint.getByTitle(site); 
    model.addAttribute("product", product); 
    return "details"; 
    } 

индекс HTML:

<form action="#" th:object="${product}" method="post" th:action="@{/details}"> 
    <table border="0" width="600" th:each="sb, poz : ${product}" > 
<tr > 
<td rowspan="3" width="20"><span th:text="${poz.count}"></span></td> 
<td> 
<a th:href="@{/details/(site=${sb.tytul})}" th:value="${site}"><span th:text="${sb.tytul}"></span></a> 
    </td> 
    </tr> 
    <tr > 
<td><span th:text="${sb.adres}"></span></td> 
</tr> 
<tr> 
<td>category:<b><span th:text="${sb.category.name}"></span></b></td> 
    </tr> 
    </table> 
    </form> 

детали метод контроллера:

@RequestMapping(value = "details/{site}", method = RequestMethod.GET) 
public String showHomePage(@PathVariable(value = "site") String site, Model model){ 
    model.addAttribute("product"); 
    return "details"; 
} 

детали HTML:

<form th:object="${product}" method="get" th:action="@{/details}"> 
    <table border="1" width="600" > 
<tr > 
<td ><span th:text="${tytul}"></span></td> 
<td> 
<span th:text="${opis}"></span> 
    </td> 
<td><span th:text="${adres}"></span></td> 
</tr> 
</table> 
</form> 

У меня нет никаких идей как сделать p сайт детали (я пробовал много решения, но ничего). Спасибо за помощь.

+0

С тимелем, этот '@ {/ details/(site = $ {sb.tytul})}' оценивается, например. 'HTTP: //yourhost.com/context/details сайт = tytul'. Контролирует ли ваш контроллер это? –

+0

Да, контроллер отображает все в порядке. – user978758

ответ

1

С thymeleaf, используя th:object, вы должны ссылаться на поля этого объекта с *{}

<form th:object="${product}" method="get" th:action="@{/details}"> 
    <table border="1" width="600" > 
<tr > 
<td ><span th:text="*{tytul}"></span></td> 
<td> 
<span th:text="*{opis}"></span> 
    </td> 
<td><span th:text="*{adres}"></span></td> 
</tr> 
</table> 
</form> 

предполагая tytul, opis и adres являются полями product. Если это не тип, не забудьте

Catalog product = catalogEndpoint.getByTitle(site); 
model.addAttribute("product", product); 

в вашем методе details контроллера, в противном случае вы не будете иметь атрибут в Catalog модели.

+0

Работает отлично, спасибо. – user978758

0

внутри вашего контроллера информации, где вы устанавливаете объект продукта в своей модели?

model.addAttribute("product"); 

только settingstring объект "продукт", принеси объект продукта и установить его в детали контроллера, как вы сделали в методе ShowDetails

+0

Спасибо за совет, я исправлю это. – user978758

0

Изменить

model.addAttribute("product"); 

Для

Catalog product = catalogEndpoint.getByTitle(site); 
model.addAttribute("product", product); 

в способе "showPage".

+0

Спасибо, после этого изменились работы. – user978758

 Смежные вопросы

  • Нет связанных вопросов^_^