gpt4 book ai didi

java - 更大范围内需要 JSF 2.0 URL 参数

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

到目前为止,我已经找到了一些对类似内容的很好的回复,但都没有解决我的问题。我正在努力以尽可能最好的方式实现这一目标。

在我的应用程序(在 Glasshfish 上运行的 JSF 2.0)中,我有一个事件列表(我们将其称为 EventPage)。可以点击每个 Activity 来显示“结果”页面(ResultPage),显示参加过该 Activity 的人员列表。

在 EventPage 上,链接如下:

 <h:link value="#{event.eventName}" outcome="displayResults">
<f:param name="eventCode" value="#{event.eventCode}"/>
</h:link>

然后,在结果 - displayResult 上,我的支持 bean 中有这样的代码(受到类似的启发):

@ManagedBean
@RequestScoped
public class DisplayResults {
@ManagedProperty(value="#{param.eventCode}")
...

这个效果很好。结果显示在数据表中。现在我想要对它们进行排序的能力。所以我遵循了这个例子:http://www.mkyong.com/jsf2/jsf-2-datatable-sorting-example/ .

但是,一旦我将支持 bean 的范围更改为其他“请求”,我就无法再使用 ManagedProperty。因此我认为我必须引用一些不太优雅的东西,例如:

public String getPassedParameter() {
FacesContext facesContext = FacesContext.getCurrentInstance();
this.passedParameter = (String) facesContext.getExternalContext().
getRequestParameterMap().get("id");
return this.passedParameter;
}

在这个论坛上阅读时,我同意这样的观点:如果您必须深入研究 FacesContext,那么您可能做错了。

SO: 1. 是否可以在不刷新 View 的情况下对数据表进行排序?只有有问题的数据表吗? 2.是否有其他好的解决方案来获取url参数(或使用不同的方式)?

谢谢!

最佳答案

使用<f:viewParam> (和 <f:event> )在目标 View 中而不是 @ManagedProperty (和@PostConstruct)。

<f:metadata>
<f:viewParam name="eventCode" value="#{displayResults.eventCode}" />
<f:event type="preRenderView" listener="#{displayResults.init}" />
</f:metadata>

作为奖励,这还允许进行更多声明性转换和验证,而无需在 @PostConstruct 中执行此操作。 .

另请参阅:

关于java - 更大范围内需要 JSF 2.0 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8933197/

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