我想有条件地输出一些Facelets代码.
为此,JSTL标签似乎工作正常:
<c:if test="${lpc.verbose}">
...
</c:if>
Run Code Online (Sandbox Code Playgroud)
但是,我不确定这是否是最佳做法?还有另一种方法来实现我的目标吗?
当尝试在EL中引用托管bean时#{bean.entity.property},有时会javax.el.PropertyNotFoundException: Target Unreachable抛出异常,通常是在设置bean属性时,或者要调用bean操作时.
似乎有五种不同的消息:
这些都意味着什么?它们是如何引起的,它们应该如何解决?
直到在什么时间点不JSF UI保存组件的状态在服务器端和什么时候被删除的UI组件的状态信息从服务器内存?当应用程序中的登录用户浏览页面时,组件的状态是否会继续在服务器上累积?
我不明白在服务器上保持UI组件状态有什么好处?是不是直接将经过验证/转换的数据传递给托管bean?我可以或者应该尽量避免它吗?
如果有数千个并发用户会话,那么在服务器端是否会消耗太多内存?我有一个应用程序,用户可以在某些主题上发布博客.这个博客的规模非常大.当有回复或请求查看博客时,这些大页面数据是否会被保存为组件状态的一部分? 这会耗费太多记忆.这不是一个问题吗?
现在,在使用JSF时不再需要保存状态.可以使用高性能无状态JSF实现.有关详细信息和讨论,请参阅此博客和此问题.此外,JSF规范中还包含一个未解决的问题,即为JSF提供无状态模式的选项.(PS考虑的问题投票这个和这个,如果这对你是一个非常有用的功能.)
一个好消息,Mojarra 2.1.19是无状态模式!
看这里:
http://weblogs.java.net/blog/mriem/archive/2013/02/08/jsf-going-stateless?force=255
问题:有时你会想要从javascript访问一个组件
getElementById,但是id是在JSF中动态生成的,所以你需要一个获取对象id的方法.我在下面回答你如何做到这一点.
原始问题: 我想使用下面的代码.如何在我的Javascript中引用inputText JSF组件?
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<head>
<title>Input Name Page</title>
<script type="javascript" >
function myFunc() {
// how can I get the contents of the inputText component below
alert("Your email address is: " + document.getElementById("emailAddress").value);
}
</script>
</head>
<h:body>
<f:view>
<h:form>
Please enter your email address:<br/>
<h:inputText id="emailAddresses" value="#{emailAddresses.emailAddressesStr}"/>
<h:commandButton onclick="myFunc()" action="results" value="Next"/>
</h:form>
</f:view>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
更新:JSF2.0中的这篇帖子客户端标识符讨论了使用如下技术:
<script type="javascript" >
function myFunc() {
alert("Your email address is: " + …Run Code Online (Sandbox Code Playgroud) 我收到这些消息:
[#| 2010-07-30T11:28:32.723 + 0000 |警告| glassfish3.0.1 | javax.faces | _ThreadID = 37; _TreadName = Thread-1; |将不可序列化的属性值设置为ViewMap :(关键字:MyBackingBean, value class:foo.bar.org.jsf.MyBackingBean)|#]
这些是否意味着我的JSF支持bean应该实现Serializable?还是他们提到了其他一些问题?
我可以将输入文本字段值传递给bean方法而不将值绑定到bean属性吗?
<h:inputText value="#{myBean.myProperty}" />
<h:commandButton value="Test" action="#{myBean.execute()} />
Run Code Online (Sandbox Code Playgroud)
我可以不进行临时保存#{myBean.myProperty}吗?
我可以动态添加JSF组件吗?我需要一个带有按钮的表单,该按钮应该<h:inputText>在表单中添加一个.这可能吗?
我知道这应该可以在JavaScript中以某种方式实现.有人知道如何在JSF中这样做吗?我认为主要的问题是如何通过获取或设置新输入的值#{value}.
这似乎不对.我正在清理我的代码,我只是注意到了这一点.每个ajax请求都会触发构造函数和@PostConstruct我的@ViewScopedbean.即使是简单的数据库分页也会触发它.
我知道这@ViewScoped比@RequestScoped任何请求都要重建并且不应该重建.只有在通过GET重新加载完整页面之后.
我在panelGrids中有很多outputLabel和inputText对
<h:panelGrid columns="2">
<h:outputLabel value="label1" for="inputId1"/>
<h:inputText id="inputId1/>
<h:outputLabel value="label2" for="inputId2"/>
<h:inputText id="inputId2/>
...
</h:panelGrid>
Run Code Online (Sandbox Code Playgroud)
我希望所有这些都有一些行为:比如每个inputText的相同验证或相同大小.所以我创建了一个复合组件,它只包含一个outputLabel和一个inputText
<my:editField value="field1"/>
<my:editField value="field2"/>
Run Code Online (Sandbox Code Playgroud)
但是现在当我将它们放在gridPanel中时,根据标签文本的长度,它们不会对齐.我理解为什么,但我不知道如何解决.
我binding在以下问题中阅读了有关属性的组件绑定:
据我所知,它将视图中JSF标记后面的UI组件绑定到UIComponent辅助bean中的属性.但是,我很困惑组件绑定的用途以及何时应该使用它.有人可以用更简单的方式解释它并给出一些实际的例子吗?
jsf ×10
jsf-2 ×4
java ×2
managed-bean ×2
alignment ×1
binding ×1
cdi ×1
components ×1
constructor ×1
el ×1
facelets ×1
grid ×1
java-ee ×1
javascript ×1
jstl ×1
state-saving ×1
view-scope ×1