Jsf 使用c:set设置非字符串值
无论何时执行Jsf 使用c:set设置非字符串值,jsf,type-conversion,jstl,el,Jsf,Type Conversion,Jstl,El,无论何时执行,{name}始终是一个字符串,如{name.class}所示 有没有办法在JSF/Facelets上下文中设置一个作用域属性,该属性是整数或长文本值?EL具有自动类型转换功能。这有一些很好的信息。然而,它的缺点是你不应该在意。只要param.month实际上是一个整数,您就应该能够执行以下操作 <c:set var="myInteger" value="${param.month}"/> <p> The value of myInteger is:<c
,{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}"/>
myInteger的值为:
执行乘法运算以显示类型正确:
在JSFXHTML页面上,我使用了一些技术来减少要键入的字符数
<!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}"
/>
我在xhtml文件的开头只写一次definevC
JSTL变量,而不是键入超过100种类型的options视图控制器
,每次使用options视图控制器
其他优点:
vC
变量+1尽管我更正了您错误地将其称为JSTL而不是EL。JSTL是这里概述的标记库,EL是JSP/EL规范中概述的
${}
东西:啊,我只需要使用一个表达式而不是一个文本,所以如果我使用value=“#{1}”,那么它将是一个很长的过程。我仍然不喜欢你不能控制它是长还是int。谢谢,只是一个输入错误。我的错。我离开爪哇岛已经有一段时间了。@GreenieMeanie:这是EL的本质,通常不会造成伤害。如果您想要类型安全,请使用JSF组件。如果它有问题,问一个新问题它有多痛,然后我们将提供解决方案/解决办法。顺便说一句,在JSF中使用JSTL并不总是被认为是一种好的做法。@Balus:整个JSP/JSF/EL/JSTL/Facelets事情都是一团糟,现在很难跟踪确切的术语和版本。。。