每当做<c:set var="name" value="1"/>
时,#{name}
总是一个字符串,如#{name.class}
.
有没有办法在 JSF/Facelets 上下文中设置一个范围属性,它是一个整数或长文本值?
每当做<c:set var="name" value="1"/>
时,#{name}
总是一个字符串,如#{name.class}
.
有没有办法在 JSF/Facelets 上下文中设置一个范围属性,它是一个整数或长文本值?
EL 有自动类型转换。这篇文章有一些很好的信息。但是,缺点是您不应该在意。只要 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}"/>
在 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}"
/>
我没有输入optionsViewController
100 多种类型,而是vC
在我的 xhtml 文件的开头编写了一次只定义 JSTL 变量,并在每次使用optionsViewController
.
其他优点:
xhtml 代码更短,更易读。
当我在不同的 xhtml 页面之间使用粘贴/复制复制一些代码行时,vC
不得替换变量!