【问题标题】:Get HTTP request parameter values in Spring managed bean在 Spring 托管 bean 中获取 HTTP 请求参数值
【发布时间】:2015-07-14 06:21:06
【问题描述】:

我有一个 Spring-JSF 集成应用程序。使用 SpringBeanFacesELResolver 完成集成。我的 bean 类由 Spring 管理。现在,我希望以“Spring 方式”在 bean 中获取我的查询字符串参数值。 我能够以“JSF方式”获取查询字符串参数值,如下所示,我不想使用它,因为bean是由Spring管理的。

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("myParamName");

您能否建议 Spring 获取这些的方法?

从我的 xhtml 文件中,我调用 bean 中的方法如下

<h:commandLink  action="#{myUserBean.onUserLoad}">

这是我的 bean 类的伪代码

@Component
@Scope("session")
public class MyUserBean {

    @Autowired
    private UserService userService;


    public String onUserLoad() {
              //get the request parameter value here
    }
 }

【问题讨论】:

  • 您使用 JSF,那么您为什么想要它不同呢?这是正常的方式,独立于管理 bean 的内容。 JSF、CDI、Spring……
  • @Kukeltje,如果bean是由Spring管理的,如果我能用Spring完全管理就好了。
  • 为什么会是?您可能可以通过在 web.xml 中添加额外的过滤器来实现这一点(不确定这些过滤器是否存在于 spring 或必须自己编写)然后祈祷各种其他问题不会出现,或者只是使用这个......而且(现在我在开玩笑,但不完全是):如果你想走 Spring 的道路,为什么不放弃 JSF 并使用 Spring MVC?
  • “JSF 方式”顺便说一下&lt;f:viewParam&gt;@ManagedProperty。如您所示,手动访问请求参数映射更像是解决极端情况的方法。 &lt;f:viewParam&gt; 方法应该同样适用于由 3rd 方框架而不是标准 Java EE 管理的 bean。
  • 然后,您始终可以将这些特定于 jsf 的调用包装在自定义实用程序类中,并在您切换 jsf 时在一个地方更改其实现。但是 BalusC 建议(这显然是正确的)如果切换……或者如果新的 mvc 不支持它,你必须在视图中做更多的工作,仍然增加你的 bean。

标签: spring jsf managed-bean http-request-parameters


【解决方案1】:

使用 org.springframework.web.context.request.RequestContextHolder 获取您的解决方案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-28
    • 2013-02-16
    • 2011-02-03
    • 1970-01-01
    • 2012-12-12
    • 1970-01-01
    相关资源
    最近更新 更多