gpt4 book ai didi

java - 关于 PrimeFaces 部分过程的问题

转载 作者:行者123 更新时间:2023-11-30 11:44:11 24 4
gpt4 key购买 nike

在我的应用程序中,我有这个托管 bean:

@ManagedBean(name = "mrBean")
@RequestScoped
public class MrBean {


@ManagedProperty(value = "#{param.id}")
private Long commentableID;
private String comment;

@PostConstruct
public void init() {
System.out.println("INIT " + commentableID);
}

public void postComment() {
System.out.println("POST COMMENT " + commentableID);
}

public void like(boolean like) {
System.out.println("LIKE " + commentableID);
}

// Getters and Setters

}

问题 1:

在查看文章的页面上,我有下面的评论框。

<h:panelGrid columns="1">
<p:inputTextarea id="comment" value="#{mrBean.comment}" />

<p:commandButton actionListener="#{mrBean.postComment}" value="Post">
<f:param name="id" value="#{viewCommentable.commentableID}" />
</p:commandButton>
</h:panelGrid>

以上代码一切正常。但是,由于 postComment() 函数只需要 comment 属性,我尝试将 process='comment' 放入上面的 p:命令按钮。此时,每当我单击 Post 按钮时,我总是会在控制台上看到 INIT [commentableID]。但是,我从未看到 POST COMMENT [commentableID]。换句话说,即使正确创建了 bean,也从未调用监听器方法 postComment()

问题 2:

在同一页面上,我有以下用于喜欢/不喜欢文章的切换按钮。

<h:inputHidden id="commentableID" value="#{mrBean.commentableID}" />

<p:selectBooleanButton id="like" value="#{viewCommentable.commentable.liked}" onLabel="Liked" offLabel="Like" >
<p:ajax process="like dislike commentableID" listener="#{mrBean.like(viewCommentable.commentable.liked)}" />
</p:selectBooleanButton>

<p:selectBooleanButton id="dislike" value="#{viewCommentable.commentable.disliked}" onLabel="Liked" offLabel="Like" >
<p:ajax process="like dislike commentableID" listener="#{mrBean.dislike(viewCommentable.commentable.disliked)}" />
</p:selectBooleanButton>

这些按钮工作正常。但是,我观察到的情况很奇怪。当我点击“赞”按钮时,我在控制台上看到了这些行:

INIT null
LIKE [commentableID]

不知何故,commentableID 属性在 init() 函数中不可用,但后来在 like() 函数中可用。

如果你能给我解释一下以上两个问题,我将不胜感激。

最好的问候,

最佳答案

我终于意识到我没有使用 process属性正确。为了部分处理,在 <p:commandButton> ,我需要我要处理的组件的 ID 以及 @this 来处理按钮本身。此外,另一个问题是我没有为 process 使用正确的语法。属性。 ID 应由 comma 分隔不是space .以下代码段应该有效:

<p:commandButton process="@this, comment" actionListener="#{mrBean.postComment}" value="Post">
<f:param name="id" value="#{viewCommentable.commentableID}" />
</p:commandButton>

<p:selectBooleanButton id="like" value="#{viewCommentable.commentable.liked}" onLabel="Liked" offLabel="Like" >
<p:ajax process="like, dislike, commentableID" listener="#{mrBean.like(viewCommentable.commentable.liked)}" />
</p:selectBooleanButton>

关于java - 关于 PrimeFaces 部分过程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10895905/

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