从JSF页面设置bean属性

从JSF页面设置bean属性,jsf,javabeans,Jsf,Javabeans,我需要做一件非常简单的事情——将当前URL从JSF(2.0)页面传递到托管bean。这是获取登录表单的URL所必需的,登录表单将在登录后将用户重定向回当前页面。(我使用GAE,bean是其用户服务的包装,如果它真的重要的话)。我尝试过的任何明显的方法都不起作用 -不工作(没有任何错误或警告消息) 将当前URL作为参数的getter无效。 这么多的问题和许多食谱,但都是复杂而不优雅的。为什么?难道我(像其他人一样)错过了一个关键的设计原则吗?我将非常感谢您的回答-简单明了的配方或解释为什么不这样做

我需要做一件非常简单的事情——将当前URL从JSF(2.0)页面传递到托管bean。这是获取登录表单的URL所必需的,登录表单将在登录后将用户重定向回当前页面。(我使用GAE,bean是其用户服务的包装,如果它真的重要的话)。我尝试过的任何明显的方法都不起作用
-不工作(没有任何错误或警告消息)
将当前URL作为参数的getter无效。
这么多的问题和许多食谱,但都是复杂而不优雅的。为什么?难道我(像其他人一样)错过了一个关键的设计原则吗?我将非常感谢您的回答-简单明了的配方或解释为什么不这样做。

可以通过(或者如果您只需要域相对路径,请使用)。用来传递和处理它

<h:commandButton action="#{bean.submit}" value="submit">
    <f:param name="url" value="#{request.requestURL}" />
</h:commandButton>
应该注意的是,a中的
f:param
在jsf1.x中不起作用。你想改用


根据评论更新:我知道您想要“将当前URL传递给托管bean”。但实际上您希望“访问托管bean中的当前URL”

在这种情况下,将
{param.url}
替换为
{request.requestURL}

@ManagedProperty("#{request.requestURL}")
private String url;
或者通过以下方式从JSF引擎罩下获取原始实例:

它可以通过(或者如果您只需要域相对路径,请使用)。用来传递和处理它

<h:commandButton action="#{bean.submit}" value="submit">
    <f:param name="url" value="#{request.requestURL}" />
</h:commandButton>
应该注意的是,a中的
f:param
在jsf1.x中不起作用。你想改用


根据评论更新:我知道您想要“将当前URL传递给托管bean”。但实际上您希望“访问托管bean中的当前URL”

在这种情况下,将
{param.url}
替换为
{request.requestURL}

@ManagedProperty("#{request.requestURL}")
private String url;
或者通过以下方式从JSF引擎罩下获取原始实例:


是的,我知道当用户按下提交按钮时,它将工作。但是我可以在不与用户交互的情况下设置一些bean属性吗?我需要在收到HTTP GET请求之后用特定的requestURI初始化一个bean属性,并且能够获取其他属性,这取决于页面下面的requestURI。有可能吗?是的,这是我的错,我很抱歉这个模棱两可的问题。现在这两个选项都可以完全满足我的需要!谢谢你,巴卢斯克@Odelya:仅当属性的范围小于bean的范围时。在这个特定的例子中,属性是请求范围的,那么bean必须是请求范围的,它的范围不能超过这个范围。是的,我知道当用户按下提交按钮时,它会工作。但是我可以在不与用户交互的情况下设置一些bean属性吗?我需要在收到HTTP GET请求之后用特定的requestURI初始化一个bean属性,并且能够获取其他属性,这取决于页面下面的requestURI。有可能吗?是的,这是我的错,我很抱歉这个模棱两可的问题。现在这两个选项都可以完全满足我的需要!谢谢你,巴卢斯克@Odelya:仅当属性的范围小于bean的范围时。在这个特定的例子中,属性是请求范围的,那么bean必须是请求范围的,它不能有比这个更大的范围。