从JSF1.2页面访问bean方法-钩子生命周期?黑客?

从JSF1.2页面访问bean方法-钩子生命周期?黑客?,jsf,methods,arguments,Jsf,Methods,Arguments,我想做类似的事情(在JSF1.2中): ... #{myObject.foreignKey(parentObject.primaryKey)} 或者换句话说:从网页上,我想在到达该页面时在对象中设置一个值 虽然这在JSF2.0中很容易,但在JSF1.2中似乎是不可能的 有没有解决方法? 定义一个以对象和字符串/整数作为参数的函数,并处理返回的对象? 覆盖inputText(和所有其他输入字段)和访问所有类型的框架相关类似乎是肮脏的这并不特定于JSF实现,而是EL实现。在之前的标准EL实现中,

我想做类似的事情(在JSF1.2中):


...
#{myObject.foreignKey(parentObject.primaryKey)}
或者换句话说:从网页上,我想在到达该页面时在对象中设置一个值

虽然这在JSF2.0中很容易,但在JSF1.2中似乎是不可能的 有没有解决方法? 定义一个以对象和字符串/整数作为参数的函数,并处理返回的对象?
覆盖inputText(和所有其他输入字段)和访问所有类型的框架相关类似乎是肮脏的

这并不特定于JSF实现,而是EL实现。在之前的标准EL实现中,不能像这样传递方法参数。除了升级到支持EL 2.2(Tomcat 7、Glassfish 3、JBoss 6等)的servletcontainer之外,您还可以自己替换EL实现。实现特定要求的常用方法是。下载并放入
/WEB-INF/lib
,并将以下内容添加到
WEB.xml
,假设您使用Mojarra作为JSF实现:

<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>

com.sun.faces.expressionFactory
org.jboss.el.ExpressionFactoryImpl
另一种方法是使用:


...

请注意,
xmlns:c=“java.sun.com/JSTL/core”
上的Facelets内置JSTL库也包含一个
c:set
,但这在功能上非常有限。
xmlns:c=“java.sun.com/jsp/jstl/core”
需要一个完整的jstl库,它通常已经随成熟的servletcontainer一起提供。然而,在ApacheTomcat中,您必须自己下载并安装它。有关链接和更多详细信息,请参阅。

这不是特定于JSF实现的,而是特定于EL实现的。在之前的标准EL实现中,不能像这样传递方法参数。除了升级到支持EL 2.2(Tomcat 7、Glassfish 3、JBoss 6等)的servletcontainer之外,您还可以自己替换EL实现。实现特定要求的常用方法是。下载并放入
/WEB-INF/lib
,并将以下内容添加到
WEB.xml
,假设您使用Mojarra作为JSF实现:

<context-param>     
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>   
</context-param>

com.sun.faces.expressionFactory
org.jboss.el.ExpressionFactoryImpl
另一种方法是使用:


...

请注意,
xmlns:c=“java.sun.com/JSTL/core”
上的Facelets内置JSTL库也包含一个
c:set
,但这在功能上非常有限。
xmlns:c=“java.sun.com/jsp/jstl/core”
需要一个完整的jstl库,它通常已经随成熟的servletcontainer一起提供。然而,在ApacheTomcat中,您必须自己下载并安装它。有关链接和更多详细信息,请参阅。

我遇到了一个非常令人沮丧的问题:在尝试上一种方法时,属性“var”是必需的错误。将一个虚拟对象作为var进行传递会使其忽略目标。也许我们正在使用一个特殊的EL-lib,或者我遗漏了一些东西(我们正在使用Spring)。恐怕明天我还要再看一次。我的c:set属性'var'是必需的错误是由旧的JSTL 1.0 xmlns导致的。。。e、 g.xmlns:c=“”,而不是xmlns:c=“”(德语)。问题:我无法验证jstlc:set是否正常工作,它从未使用JBoss4.2.2为我调用setter。我找到了大量的JSP示例,但没有一个是JSF示例。似乎我仍然在黑暗中跌跌撞撞,因为我无法获得更新的…/JSP/jstl/。。标签根本不起作用。似乎有点困惑。。。看见我也在使用xhtmli,我会接受答案,因为不管怎样,balusc rox,即使有人应该编辑JSTL。我得到一个非常令人沮丧的结果:在尝试上一种方法时,属性“var”是必需的错误。将一个虚拟对象作为var进行传递会使其忽略目标。也许我们正在使用一个特殊的EL-lib,或者我遗漏了一些东西(我们正在使用Spring)。恐怕明天我还要再看一次。我的c:set属性'var'是必需的错误是由旧的JSTL 1.0 xmlns导致的。。。e、 g.xmlns:c=“”,而不是xmlns:c=“”(德语)。问题:我无法验证jstlc:set是否正常工作,它从未使用JBoss4.2.2为我调用setter。我找到了大量的JSP示例,但没有一个是JSF示例。似乎我仍然在黑暗中跌跌撞撞,因为我无法获得更新的…/JSP/jstl/。。标签根本不起作用。似乎有点困惑。。。看见我也在使用XHTML,我会接受答案,因为不管怎样,balusc rox,即使有人应该编辑JSTL。
<html xmlns="java.sun.com/jsp/jstl/core">
...
<c:set target="#{myObject}" scope="request" property="foreignKey" value="#{parentObject.primaryKey}" />