apr*_*l26 13 parameters seam java-ee
当我调试我的接缝应用程序时,我突然意识到我并不真正理解参数传递的工作原理.以下术语让我很困惑.所以我在问这个非常普遍的问题,希望能够很好地解释什么与什么以及某些事物的作用有什么关系.
首先,要从一个页面到下一个页面,您可以使用h:commandButton或s:按钮.我理解s:按钮不提交表单,但这并不能帮助我理解差异.如果您没有通过从一个页面到下一个页面提交表单,那么您在做什么?
我的应用程序涉及在表单中输入信息,点击按钮然后转到运行查询后显示结果的新页面.我似乎已经看到这个活动是用s:按钮进行的,那么如果它不是"提交表单"怎么办呢?我觉得我在这里缺少一些基本的东西.
至于参数本身...从我看到的你可以使用3种方法之一传递参数:
我敢肯定,这个问题揭示了很多无知.
希望你们中的一个有说服力的人会"得到"我所要求的东西并给我一个解释这个过程的方法.
提前致谢.
TDR
Dam*_*amo 27
如果您没有通过从一个页面到下一个页面提交表单,那么您在做什么?
导航到另一个页面而不提交任何表单字段.
我的应用程序涉及在表单中输入信息,点击按钮然后转到运行查询后显示结果的新页面.我似乎已经看到这个活动发生在s:button
s:按钮不会提交表单,因此页面上的值不会应用于模型.您必须使用commandButton/Link.您可能看到的活动是将已填充的值传递给另一个页面.
经常使用s:button/link,因为这些通常用于导航.您可以使用f:param将已填充的值传递到另一个页面.h:commandButton/Link用于提交表单,因此值在表单字段中.当然没有什么能阻止你使用f:param来实现这一点.
这里使用的参数用于将请求参数应用于模型,反之亦然.
可以与上述所有内容结合使用,但与page.xml params一起使用时有点无意义,因为它们可用于执行相同的工作
如果您从这个页面开始:
http://mydomain.com/myapp/home.seam?name=damo
Run Code Online (Sandbox Code Playgroud)
home.page.xml有:
<param name="name" value="#{person.name}"/>
Run Code Online (Sandbox Code Playgroud)
然后,当加载页面时,person.setName("damo")将调用URL,因为URL中存在匹配的请求参数.
您可以将param的值存储在下一页的链接中:
<s:link value="Go to Page 2" view="/page2.xhtml">
<f:param name="name" value="#{person.name}"/>
</s:link>
Run Code Online (Sandbox Code Playgroud)
单击链接并导航到http://mydomain.com/myapp/page2.seam 并且page2.page.xml具有:
<param name="name" value="#{someOtherBean.name}"/>
Run Code Online (Sandbox Code Playgroud)
然后someOtherBean.setName("damo")将被召唤.
Page2可能有:像这样的按钮:
<s:button value="Say Hello" action="#{someOtherBean.sayHello}">
<f:param name="subject" value="#{someOtherBean.name}"/>
</s:button>
Run Code Online (Sandbox Code Playgroud)
方法可以是:
@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);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
15120 次 |
| 最近记录: |