당신이 /WEB-INF
에 .tag
파일의 내용을 넣어, JSP하지 Facelets의를 사용하고 있다고 가정하면, /WEB-INF/tags/outputLimitedText.tag
입니다. 다음과 같이
<%@ tag body-content="empty" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>
<c:choose>
<c:when test="#{fn:length(value) > maxlength}">
<h:outputText title="#{value}" value="#{fn:substring(value, 0, maxlength)}..."/>
</c:when>
<c:otherwise>
<h:outputText title="#{value}" value="#{value}"/>
</c:otherwise>
</c:choose>
그럼 당신은 그것을 참조 할 수 있습니다 :
<%@ taglib prefix="my" tagdir="/WEB-INF/tags" %>
...
<my:outputLimitedText value="#{teststep.name}" maxlength="25" />
또한 Converter
를 사용할 수 있습니다.
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
String string = (String) value;
int maxlength = Integer.valueOf((String) component.getAttributes().get("maxlength"));
if (string.length() > maxlength) {
return string.substring(0, maxlength) + "...";
} else {
return string;
}
}
와
<h:outputText title="#{teststep.name}" value="#{teststep.name}">
<f:converter converterId="substringConverter" />
<f:attribute name="maxlength" value="25" />
</h:outputText>
또한 사용자 정의 EL 함수를 만들 수 있습니다. 당신이
<h:outputText title="#{teststep.name}" value="#{util:ellipsis(teststep.name, 25)}">
으로 끝낼 수 있도록 EL 기능의 구체적인 예는이 대답에 나와있다 : 나는 첫 번째 솔루션을 시도 How to concatenate Strings in EL?
그 didnt가 나를 감동 :)하지만 같은 일을하고 싶습니다 . h : outputText의 기능을 유지하면서 더 많은 기능 만 추가 할 수 있습니까? –
Satya
나는 세 번째 옵션을 시도해 볼 것이다. 나를 위해 새로운 것을 배우는 것처럼 보인다. :) 고맙습니다. BalusC – Satya
기존 구성 요소에 새 속성을 추가하는 것은 맞춤 태그가 아닌 맞춤 구성 요소에서만 가능합니다. 이것은 매우 지루한 작업입니다. ** 모든 ** 기존 태그 속성은 기존 태그에서 상속 할 수 없으므로 복사해야합니다. 여분의 속성을''으로 제공하고 디폴트'Renderer'를 오버라이드하는 것이 더 쉽습니다. –
BalusC