JSF - 从xhtml页面更新Bean变量

时间:2014-04-17 18:41:42

标签: spring jsf primefaces xhtml javabeans

我在使用JSF从xhtml页面更新bean变量时遇到问题。我能够使用自定义值更新Bean变量,但我希望从xhtml页面本身定义的变量中读取值。

xhtml页面的相关部分如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:p="http://primefaces.org/ui">

<h:body>
    <ui:repeat value="#{bean.variable}" var="results">
        <c:set target="#{bean}" property="otherVariable" value="results.name" />

        Testing if the bean-variable could be read in the loop: #{results.email}

    </ui:repeat>
</h:body>
</html>

在Bean类中,我将 otherVariable 打印到stdout。每次都是 null 。当我用标记“5”替换Tag中的值时,在Bean变量中正确设置了值。

那么如何从xhtml页面更新Bean变量?

1 个答案:

答案 0 :(得分:0)

这里有两个问题:

  1. 您尝试在不使用正确的EL的情况下在c:set标记中设置值:“#{results.name}”

  2. c:在面部生命周期内过早评估set标签,以便在ui:repeat标签的内容中可用

  3. 在这些情况下,我通常只将此值作为参数传递给需要它的backing bean方法。例如:#{results.doSomething(results.name)}