【发布时间】:2011-01-28 16:44:58
【问题描述】:
无论何时执行<c:set var="name" value="1"/>,#{name} 始终是一个字符串,正如#{name.class} 所证明的那样。
有没有办法在 JSF/Facelets 上下文中设置一个范围属性,它是整数或长文本值?
【问题讨论】:
标签: jsf type-conversion jstl el
无论何时执行<c:set var="name" value="1"/>,#{name} 始终是一个字符串,正如#{name.class} 所证明的那样。
有没有办法在 JSF/Facelets 上下文中设置一个范围属性,它是整数或长文本值?
【问题讨论】:
标签: jsf type-conversion jstl el
在 JSF xhtml 页面上,我使用技术来减少要输入的字符数!
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
>
<!-- JSF ViewController of this page -->
<c:set var="vC" value="#{optionsViewController}"/>
...
<h:outputText
value="#{vC.txtOriginator.value}"
rendered="#{vC.txtOriginator.protected}"
/>
而不是
<h:outputText
value="#{optionsViewController.txtOriginator.value}"
rendered="#{optionsViewController.txtOriginator.protected}"
/>
我没有输入超过 100 种类型的 optionsViewController,而是在我的 xhtml 文件开头编写了一次只定义 vC JSTL 变量,并在每次使用 optionsViewController 时使用它。
其他优势:
xhtml 代码更短,更易读。
当我使用粘贴/复制复制一些代码行时
xhtml 页面,vC 变量不得替换!
【讨论】:
EL 具有自动类型转换。这个article 有一些很好的信息。但是,缺点是您不应该在意。只要 param.month 实际上是一个整数,您就应该能够执行以下操作。
<c:set var="myInteger" value="${param.month}"/>
<p>
The value of myInteger is:<c:out value="${myInteger}"/>
Perform a multiplication operation to show that the type is correct:
<c:out value="${myInteger *2}"/>
【讨论】:
${} 在此 JSP/EL 规范中所述的东西:jsp.dev.java.net/spec/jsp-2_1-fr-spec-el.pdf