如何使用JSF标记(可能是InPurthidden)设置具有固定名称的http请求参数?

如何使用JSF标记(可能是InPurthidden)设置具有固定名称的http请求参数?,jsf,el,servlet-filters,http-request-parameters,Jsf,El,Servlet Filters,Http Request Parameters,我一直在使用JSF。当我提交表单时,来自JSF标记(如h:inputText)的数据以某种方式在请求中传递给服务器。我不知道JSF如何根据请求参数或属性重写它(我甚至不太熟悉http请求)。我只知道如何使用“el”语言。但现在我必须在提交请求中添加一个字符串,我需要一种方法,允许我在过滤器中读取该字符串。因此,我希望以某种方式使用JSF标记(可能是InPurthidden)设置具有固定名称的http请求参数(如“MySecretToken”),然后在过滤器中我可以编写: @Override pu

我一直在使用JSF。当我提交表单时,来自JSF标记(如h:inputText)的数据以某种方式在请求中传递给服务器。我不知道JSF如何根据请求参数或属性重写它(我甚至不太熟悉http请求)。我只知道如何使用“el”语言。但现在我必须在提交请求中添加一个字符串,我需要一种方法,允许我在过滤器中读取该字符串。因此,我希望以某种方式使用JSF标记(可能是InPurthidden)设置具有固定名称的http请求参数(如“MySecretToken”),然后在过滤器中我可以编写:

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) request;

if ( isTokenValid( httpRequest.getParameter("MySecretToken") ))
     doThis(...);
else
     doThat(...);

     chain.doFilter(request, response);
}
因此,问题是“如何使用JSF标记(可能是InPurthidden)设置具有固定名称的http请求参数?”。

最简单的方法是使用in
组件。它基本上添加了一个具有指定名称和值的HTTP请求参数

<h:commandButton ...>
    <f:param name="MySecretToken" value="#{bean.mySecretToken}" />
</h:commandButton>


更类似JSF的方法是为作业创建自定义组件。例如,
。您甚至可以创建一个自定义组件事件监听器,该监听器每次都会自动将该自定义组件添加到表单中

JSF使用客户机标识符编写表单元素的ID,这些ID随后成为提交参数的参数名。描述了如何构建它们。您还可以考虑使用以下选项