gpt4 book ai didi

jsf-2 - 如何在primefaces中使用RequestContext?

转载 作者:行者123 更新时间:2023-12-02 06:00:57 24 4
gpt4 key购买 nike

我是 primefaces 新手。我尝试 primeface showcase 中的一些例子

但是;

saveUser之后,在ajax方法上handleComplete(xhr, status, args) args没有在saveUser方法中添加的参数。

编辑:我刚刚添加了 @ManagedBean 注释,因为我使用的是 jsf 2.0

EDIT-2

在我的 pom 中;

        <dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>2.2</version>
</dependency>

在我的 web.xml 中

<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>

在我的 .xhtml 页面中

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">

<h:head>

<script type="text/javascript">
function handleComplete(xhr, status, args) {
if(args.validationFailed) {
alert("Validation Failed");
} else {
alert("Save:" + args.saved);
alert("FirstName: " + args.user.firstname + ", Lastname: " + args.user.lastname);
}
}
</script>

</h:head>
<h:body>
<h:form>
<p:panel id="panel" header="New User">
<h:panelGrid columns="2">
<h:outputLabel for="firstname" value="Firstname: *" />
<p:inputText id="firstname" value="#{user.firstName}" required="true"/>

<h:outputLabel for="surname" value="Lastname: *" />
<p:inputText id="surname" value="#{user.surName}" required="true"/>
</h:panelGrid>
</p:panel>

<p:commandButton value="Save" actionListener="#{user.saveUser}" oncomplete="handleComplete(xhr, status, args)" />
</h:form>


</h:body>
</html>

在我的 bean 里;

@ManagedBean(name = "user")
public class User {

private String firstName = "";
private String surName = "";

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getFirstName() {
return firstName;
}

public void setSurName(String surName) {
this.surName = surName;
}

public String getSurName() {
return surName;
}

public void saveUser(ActionEvent actionEvent) {
// save user
RequestContext context = RequestContext.getCurrentInstance();
context.addCallbackParam("saved", true);
context.addCallbackParam("user", this);
}

}

编辑-3

我可以使用 this.PrimeFaces.ajax.RequestManager.requests[0].data 捕获 ajax 响应中携带数据的属性,它携带该数据;

"j_id2059540600_7ac21836=j_id2059540600_7ac21836&j_id2059540600_7ac21836%3Afirstname=qweq&j_id2059540600_7ac21836%3Asurname=asda&javax.faces.ViewState=8900392402396831372%3A-8139730777939772917&javax.faces.partial.ajax=true&javax.faces.source=j_id2059540600_7ac21836:j_id2059540600_7ac218a5&javax.faces.partial.execute=@all&j_id2059540600_7ac21836:j_id2059540600_7ac218a5=j_id2059540600_7ac21836:j_id2059540600_7ac218a5"

但我很确定还有另一种选择。就是看不到。

感谢您的帮助。

最佳答案

解决了!这是关于包含命令按钮的表单的范围问题。表单中的命令按钮(我认为..没有阅读有关它的正式文档。)具有其自己的表单范围。无法访问/更新/修改表单中的元素。

关于jsf-2 - 如何在primefaces中使用RequestContext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651411/

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