jsf-2 - 如何从 Facelets 页面中的 JSP 页面获取请求参数?

标签 jsf-2 facelets

我有一个 login.jsp 页面:

<form method="post" action="url:8081/login.xhtml">
    Username : <input type="text" name="txtUsername"/>
    Password : <input type="text" name="txtPassword"/>
    <input type="submit" value="submit"/>
</form>

提交时,如何获取login.xhtml中的txtUsernametxtPassword参数?

最佳答案

所有请求参数都在 #{param} 映射可用的 EL 中。因此,应该这样做:

<p>Username: #{param.txtUsername}</p>
<p>Password: #{param.txtPassword}</p>

如果您需要通过 Java 代码对它们进行预处理,最好将它们作为托管属性或 View 参数放在与 login.xhtml 关联的支持 bean 类中。

托管属性示例:

@ManagedBean
@RequestScoped
public class Login {

    @ManagedProperty("#{param.txtUsername}")
    private String username;

    @ManagedProperty("#{param.txtPassword}")
    private String password;

    @PostConstruct
    public void init() {
        // Do here your thing with those parameters.
        System.out.println(username + ", " + password);
    }

    // ...
}

查看参数示例:

<f:metadata>
    <f:viewParam name="txtUsername" value="#{login.username}" required="true" />
    <f:viewParam name="txtPassword" value="#{login.password}" required="true" />
    <f:event type="preRenderView" listener="#{login.init}" />
</f:metadata>

@ManagedBean
@RequestScoped
public class Login {

    private String username;
    private String password;

    public void init() {
        // Do here your thing with those parameters.
        System.out.println(username + ", " + password);
    }

    // ...
}

另见:

关于jsf-2 - 如何从 Facelets 页面中的 JSP 页面获取请求参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876430/

相关文章:

javascript - reCaptchaV2 超时后禁用提交按钮

Primefaces 树表选择事件

jsf - 将操作方法​​名称作为参数传递给 facelets 组件

jsf - 如何发送表单输入值并调用 JSF bean 中的方法

java - 如何在一个 ui :repeat? 中迭代两个数组

jsf - 为什么 @PostConstruct 回调每次都会触发,即使 bean 是 @ViewScoped 的? JSF

security - 排除 web.xml 中的 css 和图像资源 安全约束

tomcat - JSF 导航案例在 IE 中不起作用

jsf-2 - h 中的标题 :head rendered before render response phase?

java - 为什么 getFacesContext() 变为 null