如果您想在提交表单时执行脚本,您可以 onclick="alert('Clicked submit button!');"
在 commandButton 标记中使用事件。
执行这两种操作的一种方法是@ManagedProperty
在 bean 中使用注释。例如,将您的 sumbit 按钮更改为这个
<h:form>
<h:commandButton value="Pay!" action="#{basketManager.pay()}"
class="btn btn-primary btn-lg" onclick="alert('Clicked submit button!');" />
</h:form>
那么你的 Bean 可能更像这样:
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name = "basketManager")
@RequestScoped
public class BasketManager implements Serializable {
@ManagedProperty(value="#{accountManager}")
private AccountManager accountManager;
//this is nessesery!
public void setAccountManager(AccountManager accountManager) {
this.accountManager = accountManager;
}
public String pay() {
if(accountManager != null) {
//... do something using accountManager.currentAccount.username
}
return ""; // your action result
}
}
您必须记住 BasketManager bean 的范围必须与 AccountManager bean 相同或更小。例如,如果 AccountManager 是,@SessionScoped
那么 BasketManager 可能是@SessionScoped
or@ViewScoped
或@RequestScoper
。那时不可能@ApplicationScoped
!