Spring MVC работает с веб-дизайнерами - PullRequest
3 голосов
/ 06 апреля 2010

При работе с веб-дизайнерами в среде Spring-MVC и JSP, существуют ли какие-либо инструменты или полезные шаблоны для облегчения перехода от HTML к JSP и обратно?

Требования к проекту диктуютэти представления будут часто меняться, и может быть трудно эффективно вносить изменения из-за объема Java-кода, который просачивается в слой представления.В идеале я хотел бы удалить почти весь код Java из представления, но не похоже, что это работает с философией Spring / JSP, где часто способ удалить код Java состоит в том, чтобы заменить этот код библиотеками тегов, которые по-прежнему будут иметьпохожая проблема.

Чтобы прояснить мой вопрос, я собираюсь включить некоторый существующий код (унаследованный мной), чтобы показать виды проблем, с которыми я, вероятно, столкнусь при изменении внешнего вида нашегоviews:

<%-- Begin looping through results --%>
<%
List memberList = memberSearchResults.getResults();
for(int i = start - 1; i < memberList.size() && i < end; i++) {
    Profile profile = (Profile)memberList.get(i);                  
    long profileId = profile.getProfileId();
    String nickname = profile.getNickname();
    String description = profile.getDescription();
    Image image = profile.getAvatarImage();
    String avatarImageSrc = null;
    int avatarImageWidthNum = 0;
    int avatarImageHeightNum = 0;

    if(null != image) {
        avatarImageSrc = image.getSrc();
        avatarImageWidthNum = image.getWidth();
        avatarImageHeightNum = image.getHeight();
    }

String bgColor = i % 2 == 1 ? "background-color:#FFF" : "";
%>
<div style="float:left;clear:both;padding:5px 0 5px 5px;cursor:pointer;<%= bgColor %>" onclick='window.location="profile.sp?profileId=<%= profileId %>"'>
    <div style="float:right;clear:right;padding-left:10px;width:515px;font-size:10px;color:#7e7e7e">
        <h6><%= nickname %></h6>
        <%= description %>
    </div> 
    <img style="float:left;clear:left;" alt="Avatar Image" src="<%= null != avatarImageSrc && avatarImageSrc.trim().length() > 0 ? avatarImageSrc : "images/defaultUserImage.png" %>" 
         <%= avatarImageWidthNum < avatarImageHeightNum ? "height='59'" : "width='92'" %> />
</div>
<%
} // End loop
%>

Теперь, игнорируя некоторые запахи кода, становится очевидным, что если кто-то захочет изменить внешний вид этого DIV, будет необходимо переместить весь код Java / JSP впредоставлен новый HTML (дизайнеры не работают с файлами JSP, у них есть собственные HTML-версии сайта).Что утомительно и подвержено ошибкам.

1 Ответ

2 голосов
/ 06 апреля 2010

Ваш пример совсем не MVC, но хорошей отправной точкой является JavaServer Pages Taglib JSTL . Помещение вашего примера в контроллер Spring и соответствующее представление JSP может выглядеть примерно так:

@Controller
public StuffController
{
    @RequestMapping("bla")
    public ModelAndView doBla()
    {
        ModelAndView view = new ModelAndView();
        // Get memberSearchResults somehow
        MemberSearchResult results = memberSearchResults.getResults();
        view.addAtrribute("memberList", results);
        view.setViewName("blaview");
        return view;
    }
}

И ваш JSP выглядит так

// blaview.jsp
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %><%@ taglib uri="http://java.sun.com/jstl/xml" prefix="x" %>
<c:forEach var="searchResult" items="${memberList}">
    <div>
        <h6>${searchResult.nickname}</h6>
        ${searchResult.description}
    </div> 
</c:forEach>

Для всего изображения вы должны назначить собственный класс bean-компонента, обладающий свойствами, которые можно использовать в JSP. Это намного чище, и, учитывая, что вы предоставляете проектировщику документацию обо всех доступных свойствах и атрибутах, им нужно будет только изучить taglib. Единственным другим вариантом было бы позволить им заниматься только проектированием и позволить кому-то еще обрабатывать метки. Очевидно, что где-то в представлении должен быть некоторый поток управления, и теги-библиотеки намного проще объяснить людям, которые привыкли кодировать HTML, чем Java Source в JSP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...