2014-12-11 7 views
0

Мы хотели бы добавить ссылку html-clickable к информационному сообщению (Spring RediractAttribute/Flash Message) после того, как конечный пользователь успешно отправит форму на нашем веб-сайте.Добавление ссылки HTML к сообщениям Spring RedirectAttribute

Итак, конец будет увидеть следующие (Flash) сообщения:

Успех

Объект обновляется.

Информация

Помните Edit Attribute.

Где Изменить атрибут будет активная ссылка в браузере конечного пользователя.

То, что у нас происходит с трудным временем, заключается в том, куда идет код, чтобы создать ссылку html-текст?

Мы не чувствуем, что в нашем файле messages.properties должен быть любой html, и мы не чувствуем, что в нашем контроллере должно быть какое-либо html-генерация.

Вот наш код контроллера:

public ModelAndView processSubmit(@Valid ObjectCommand command, BindingResult bindingResult, RedirectAttributes redirectAttributes, HttpServletRequest request) { 
    if (bindingResult.hasErrors()) { 
     return new ModelAndView("/form.html"); 
    } else { 
     // Command Object successfully send to service to update database as needed. 

     // First Flash Message (the success message from above). 
     redirectAttributes.addFlashAttribute("successMessage", "Object updated."); 

     // Second Flash Message (The informational message from above urging the user to go update something else too. 
     String informationMessage = this.getInformationMessage(request, object); 
     redirectAttributes.addFlashAttribute("infoMessage", informationMessage); 

     return new ModelAndView("redirect:/object.html"); 
    } 
} 

private String getInformationMessage(Request request, Object object) { 
    // THIS CODE HERE, FEELS SLIMY. 
    String editUrl = "Remember to <a href=\"" + request.getContextPath() + "/object/" + object.getIdentifier() + "/attribute.html\" />Edit Attribute</a>"; 
} 

Тогда вот наш JSP код тегов для отображения обоего информационных сообщений:

<%@tag body-content="empty"%> 
<%@ include file="/WEB-INF/views/html/common/include.jsp" %> 
<%@ attribute name="message" required="true" type="java.lang.String" %> 

<c:if test="${not empty message}"> 
    <div class="info_message"> 
     <div class="title">Information:</div> 
     <div class="body"> 
      ${message} 
     </div> 
    </div> 
</c:if> 

Любого дружеского совета о том, как получить активную ссылку на нашем информационное сообщение будет принята с благодарностью.

ответ

0
  1. processSubmit должен возвращать «переадресовать:/какой-URL» или RedirectView

  2. Значение, которое вы положили в redirectAttributes должны быть доступны в параметре модели (или через @ModelAttributes) после того, как вы переадресованы ,

Процесс:

GET вид (URL =/Forma, метод = GET)
пользователя Сообщений форма (URL =/Forma, метод = POST)
- сохранение/процесс в формы данных. Установить redirectAttributes
- перенаправить где-нибудь (скажем,/formA, или/formAComplete)

+0

Спасибо за ответ. Я обновил свой код, чтобы иметь правильную переадресацию. На самом деле это не мой вопрос. Мой вопрос включает код, который находится в методе getInformationMessage. Не представляется правильным форматировать html-текст в контроллере, поскольку, по крайней мере, на мой взгляд, контроллер должен быть агностиком того, как его представление фактически отображает что-либо. В этом суть моей проблемы. – hooknc