gpt4 book ai didi

post - JSF 接收 POST 参数

转载 作者:行者123 更新时间:2023-12-03 23:26:36 25 4
gpt4 key购买 nike

今天,我使用 servlet 从 HTML 页面接收 POST,然后重定向到我的 JSF 页面。

这是我的实际 Servlet:

   public class CommInServlet extends HttpServlet {

private String reportKey;

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getSession(true).setAttribute("reportKey", req.getParameter("reportkey"));
req.getRequestDispatcher("main.xhtml").forward(req, resp);
}

}

HTML 帖子页面:
<html>
<head />
<body>
<form action="Filtro" method="post">
<input type="text" size="120" name="reportkey" value="XXXXXXXXXXXX" />
<input type="submit" value="doPost" />
</form>
</body>
</html>

是否可以直接发布到我的 JSF 页面 (ManagedBean)?如何?
我想替换 Servlet 的东西......更好。

最佳答案

你当然可以。大多数 JSF 请求是 POST无论如何,如果您使用 JSF 页面的路径,您打算处理 POST请求,然后您可以在由该页面支持的托管 bean 中获取参数,或者在页面本身中获取参数。

在托管 bean 中:

     @PostConstruct
public void initMyBean(){
/**This map contains all the params you submitted from the html form */
Map<String,String> requestParams = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
requestParams.get("reportKey");
}


在托管 bean 中有
     @ManagedProperty(value="#{param.reportKey}")
String reportKey;
//getter and setter of course!

您用 @PostConstruct 注释的方法将在托管 bean 实例化后执行。以上将使您可以在托管 bean 中进行访问。

但是,如果您首先需要页面中的值,则可以将其放在页面中(最好在顶部)
     <f:metadata>
<f:viewParam name="reportKey" value="#{backingBean.reportKey}" required="true"/>
</f:metadata>

请注意如何从 View 中对参数执行验证。很酷的功能。

只要确定并设置您的 html 表单 action属性到 JSF View 的路径。

关于post - JSF 接收 POST 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12750794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com