Jsf a href/h:链接结果/h:在页面加载期间自动调用的按钮结果方法,无需任何单击
我用Jsf a href/h:链接结果/h:在页面加载期间自动调用的按钮结果方法,无需任何单击,jsf,hyperlink,methodexpression,Jsf,Hyperlink,Methodexpression,我用h:link或一个标记实现了3个带有3个链接的页面。但在这两种情况下,每当我导航到页面时,都会调用连接到这些链接的方法 下面是标记实现: <a href="#{bean.gotoMySrchie()}"> <h:graphicImage library="images" name='vo2/FavPlus.png' /> </a> <a href="#{bean.gotoMySearches()}">
h:link
或一个
标记实现了3个带有3个链接的页面。但在这两种情况下,每当我导航到页面时,都会调用连接到这些链接的方法
下面是
标记实现:
<a href="#{bean.gotoMySrchie()}">
<h:graphicImage library="images" name='vo2/FavPlus.png' />
</a>
<a href="#{bean.gotoMySearches()}">
<h:graphicImage library="images" name='vo2/SearchesPlus.png' />
</a>
<a href="#{bean.gotoMyBids()}">
<h:graphicImage library="images" name='vo2/BidsPlus.png' />
</a>
问题是,这些操作方法中的每一个都在调用我的数据库,这完全是浪费调用时间。那么,在JSF2中是否有一种方法可以在页面之间导航,同时使用动作方法来实际执行某些操作,但在我不需要调用这些方法时,却不调用它们
<a href="#{bean.gotoMySrchie()}">
但是,这会触发POST请求,而不是GET请求,因此可能会产生许多其他后果
默认情况下,单击普通链接会发送GET请求,而不是POST请求。如果您想继续使用GET,那么您应该在与目标页面相关联的支持bean的@PostConstruct
方法中执行数据库作业,而不是像在加载包含这些链接的页面时那样执行
<h:link ... outcome="/searches">
<h:graphicImage ... />
</h:link>
另见:
<h:link ... outcome="#{bean.gotoMySearches()}">
<h:form>
<h:commandLink ... action="#{bean.gotoMySearches()}" />
</h:form>
<h:link ... outcome="/searches">
<h:graphicImage ... />
</h:link>
@Named
@RequestScoped // Or @ViewScoped
public class SearchesBean {
@PostConstruct
public void init() {
// Here.
}
// ...
}