lose view page parameter

≯℡__Kan透↙ 提交于 2019-12-11 17:53:45

问题


i have page my.xhtml:

<f:metadata>
  <f:viewParam name="id"/>
</f:metadata>
...
<h:form>
  Current id is: "#{id}"

  <h:commandButton action="#{bean.doSomething}" value="Do some logic..">
     <f:param name="id" value="#{id}"/>
  </h:commandButton>
</h:form>

and Bean.java:

@ManagedBean
@ViewScoped
public class Bean {
   ....
   public void doSomething(){
     //do some logick, don't use id parameter
   }
}

When I get to page first time with id=10 I can see on page Current id is: "10".. When I click on button page is reload and I can see on page Current id is: "10". again.

But when I click on button third time I can see on page Current id is: ""., i lose id parameter and I don't understand why?

I know I can do this with save parameter value in bean (by add to f:viewParam:

<f:metadata>
  <f:viewParam name="id" value="#{bean.value}/>
</f:metadata>

), but can I do this without save parameter value in bean?


回答1:


h:button works with f:param but h:commandButton does not. In this case, your best is to bind the view parameter to a bean property as you explain the last. The @ViewScoped bean will retain its state as long as you call void action methods.

You could also pass it as a parameter to the action method (there are several ways to do that), but this doesn't make sense for a method which has nothing to do with that value.

See also:

  • Passing parameters to action methods in JSF
  • Communication in JSF


来源:https://stackoverflow.com/questions/20895454/lose-view-page-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!