每当执行<c:set var="name" value="1"/>
时,#{name}
始终是#{name.class}
所证明的字符串。
在JSF / Facelets上下文中是否有任何方法可以设置作为Integer或Long文字值的作用域属性?
答案 0 :(得分:4)
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}"/>
答案 1 :(得分:0)
在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种类型,而是在我的xhtml文件开始时只编写一次定义vC
JSTL变量,并在每次使用optionsViewController
时使用它。
其他优势:
xhtml代码更简短,更易读。
当我使用粘贴/复制在不同的代码之间复制一些代码行时
xhtml页面,不得替换vC
变量!