Jakarta ee 不了解seam中的传递参数
在调试seam应用程序时,我突然意识到我并不真正理解参数传递是如何工作的。下面的术语真的把我弄糊涂了。所以我问这个非常普遍的问题,希望能得到一个很好的解释,什么是有效的,什么是特定的东西 首先,要从一页转到下一页,可以使用h:commandButton或s:button。我知道s:button没有提交表单,但这并不能帮助我理解其中的区别。如果你不是通过从一页转到下一页来提交表格,那么你在做什么 我的应用程序包括在表单中输入信息,点击一个按钮,然后进入一个新页面,在运行查询后显示结果。似乎我已经看到这个活动是用s:button进行的,那么如果它不是“提交表单”,那又如何呢?我觉得我错过了一些基本的东西 至于参数本身……根据我所见,您可以使用以下三种方法之一传递参数:Jakarta ee 不了解seam中的传递参数,jakarta-ee,parameters,seam,Jakarta Ee,Parameters,Seam,在调试seam应用程序时,我突然意识到我并不真正理解参数传递是如何工作的。下面的术语真的把我弄糊涂了。所以我问这个非常普遍的问题,希望能得到一个很好的解释,什么是有效的,什么是特定的东西 首先,要从一页转到下一页,可以使用h:commandButton或s:button。我知道s:button没有提交表单,但这并不能帮助我理解其中的区别。如果你不是通过从一页转到下一页来提交表格,那么你在做什么 我的应用程序包括在表单中输入信息,点击一个按钮,然后进入一个新页面,在运行查询后显示结果。似乎我已经看
http://mydomain.com/myapp/home.seam?name=damo
并且home.page.xml具有:
<param name="name" value="#{person.name}"/>
<param name="name" value="#{someOtherBean.name}"/>
当您单击链接并导航到
而page2.page.xml具有:
<param name="name" value="#{person.name}"/>
<param name="name" value="#{someOtherBean.name}"/>
方法可以是:
@Name("someOtherBean")
public class SomeOtherBean {
@RequestParameter("subject") //same value as the 'name' in f:param
private String subject;
public void sayHello() {
System.out.println("Hello "+subject);
}
}
希望这有帮助 这个问题已经有了很好的答案。我只是想添加一些额外的信息 如果你不是通过从一页转到下一页来提交表格,那么你在做什么?
onclick
属性执行客户端验证或运行javascriptaction
属性调用bean中的方法/
没有提交表单,因此您可以在第二页运行查询,但肯定没有以前输入的数据
/
标记,那么如果您在长时间运行的对话中,或者如果您的bean是会话范围的,那么您可以在第二页访问该数据。如果您在第二页中看到表单数据,这可能就是原因page.xml
设置的值将被覆盖。请看以下示例。假设您的
page.xml
有以下行
<param name="name" value="#{myBean.name}"/>
现在,如果你像这样调用页面
http://...../app_name/home.seam?name=william
http://...../app_name/home.seam?name=william&userName=tony
将调用setName
,并将name属性设置为“william”
现在假设您这样定义变量
@RequestParameter("userName")
String name;
然后像这样调用页面
http://...../app_name/home.seam?name=william
http://...../app_name/home.seam?name=william&userName=tony
然后仍然调用setName
方法,并将name
属性设置为“william”。但是这个值被值“tony”覆盖