2011-02-15 2 views
0

현재 Spring 3 MVC로 작업하고 있으며 JSP 템플릿에서 라벨, 오류, 레이아웃 divs 등과 같이 여러 번 반복해야한다는 것을 알고 있습니다.Spring 3에서 Struts2와 같은 테마 MVC

<div class="field-row"> 
    <label>Email:</label> 
    <form:input path="email" /> 
    <form:errors path="email" cssClass="error" /> 
</div> 

스트럿츠 2에서 테마 매개 변수에 따라 사용되는 태그를 기반으로 HTML 코드를 생성, 테마 구성 요소가 있습니다. 비슷한 결과를 얻기 위해 Spring 3이나 이와 비슷한 플러그인이 있습니까?

예를 들어, 스트럿츠 2, 당신은

<s:textfield key="user.email" required="true" maxlength="200" theme="someTheme" />  

같은 것을 가질 수 적절한 프리 마커 템플릿 예와 결합

<div class="${rowClass}"> 
     <#include "/${parameters.templateDir}/tgis/control-label.ftl" /> 
     <#-- render the control --> 
     <input type="text" name="${parameters.name?default("")?html}" 
     <#if parameters.maxlength?exists>maxlength="${parameters.maxlength?html}"</#if> 
     . 
     . 
     <#include "/${parameters.templateDir}/simple/common-attributes.ftl" /> 
     /> 
     <#include "/${parameters.templateDir}/tgis/control-errors.ftl" /> 
    </div> 

HTML이 자동으로 모든 레이블 생성되는 등 오류

<div class="row"> 
     <label for="user.email">E-mail <span id="user.email_rlabel" class="required">*</span> 
     </label> 
     <input type="text" name="user.email" maxlength="200" value="[email protected].com" id="editProfile_user_email" class="inputText" /> 
    </div> 

답변

0

태그 파일은 잘 작동합니다. 태그 파일을 사용하여 발견 한 유일한 문제점은 렌더링 될 때마다 공백을 발생시키는 것입니다. 그래서 당신이 큰 폼을 가지고 있다면, 그것은 html 문서 내에 여분의 공백 톤을 생성 할 것입니다.

+0

태그 파일에 대한 포인터를 보내 주셔서 감사합니다. 전에는 본적이 없지만 보통 JAR 스타일의 태그 라이브러리 만 보았습니다. – masotime

+0

OK 두 솔루션을 모두 살펴 보았습니다. JSPx와 다른 JSP를 제외하고는 본질적으로 둘 다 동일하게 보입니다. JSPx는 JSPx로 전환하는 학습 곡선이 줄어들어 내 사례에서 더 나은 선택 인 것처럼 보이므로 답변으로 투표 할 것입니다. 두 입력 기자에게 감사드립니다. – masotime

0

JSP에서 일반적인 솔루션이 있습니다 (X). 템플릿을 설명하는 jsp tagx 파일이 필요하다면 jspx에서 사용할 수 있습니다.

스프링로 (1.1.1)보다 완벽한 예제를 원한다면이 기술을 많이 사용합니다.

예 (은 내가 루의 예를 조금 단순화,하지만 난 여전히 옳은 일을하지 희망 : 심지어하지 않을 경우, 내가을 무엇을 의미하는지 설명) :

태그/양식/필드/textara을 .tagx : create.jspx에서

<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" 
    xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
    xmlns:spring="http://www.springframework.org/tags" 
    xmlns:form="http://www.springframework.org/tags/form" 
    xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> 
    <jsp:output omit-xml-declaration="yes" /> 

    <jsp:directive.attribute name="id" type="java.lang.String" required="true" /> 
    <jsp:directive.attribute name="field" type="java.lang.String" required="true" /> 

    <spring:message code="label_${fn:toLowerCase(fn:substringAfter(id,'_'))}" var="label" /> 

    <div id="_${id}_id"> 
    <label for="_${id}_id"> 
     <c:out value="${label}" />   
    </label> 
    <form:textarea id="_${id}" path="${field}" /> 
    <form:errors cssClass="errors" id="_${id}_error_id" path="${field}" /> 
    </div> 
    <br /> 

</jsp:root> 

사용 :

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<div xmlns:c="http://java.sun.com/jsp/jstl/core" 
    xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" 
    xmlns:form="urn:jsptagdir:/WEB-INF/tags/form" 
    xmlns:jsp="http://java.sun.com/JSP/Page" 
    xmlns:spring="http://www.springframework.org/tags" version="2.0"> 
... 
    <field:textarea field="street" id="c_com_test_roo_domain_Address_street"/> 
... 
</div> 
+0

종합적인 답변을 보내 주셔서 감사합니다. 나는 JSP (x)를 점검하고 이것이 얼마나 적합한 지 살펴볼 것이다. – masotime

관련 문제