我使用的是JSF2.2通通元素,我想调用这两个函数,jsf:action和jsf:onclick。我尝试了很多方法来做这件事,但没有一个对我有用。
我得到的最接近的方法是这样:
<form jsf:id="frmNavigation">
<a jsf:id="btnHome" jsf:action="#{bean.action()}" jsf:onclick="clickHome">
<f:ajax execute="@form" render="frmRedirect:frmNewHomeRedirect"/>
</a>
[...]
</form>JS
function clickHome(){
document.getElementById("frmRedirect:frmNavigation:btnHome").addClass("metro-btn-red");
document.getElementById("frmRedirect:frmNavigation:btnCadCli").removeClass("metro-btn-red");
document.getElementById("frmRedirect:frmNavigation:btnModel1").removeClass("metro-btn-red");
document.getElementById("frmRedirect:frmNavigation:btnModel2").removeClass("metro-btn-red");
}Note My JS --它在HTML页面中,但无论是在外部JS中,它都没有工作。
与JS appers中的id相关的是正确的。我检查了DOM输出。
我还尝试在JS代码中调用click函数。没起作用。要么尝试HTML,但这一个删除Mojarra事件( jsf:action )。我在这个论坛上发现了另一个人
http://www.coderanch.com/t/211593/JSF/java/Calling-backingBean-method-javascripthttp://www.coderanch.com/t/211593/JSF/java/Calling-backingBean-method-javascript
你猜怎么着,它不太管用。
我错过了一些我无法想象的东西。
我在想有没有办法叫我的行动从JS。有没有办法做到这一点,而不构成一个新的元素?
提前谢谢。
更新
在一个新项目中尝试同样的方法:
<!DOCTYPE html >
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:jsf="http://xmlns.jcp.org/jsf"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<head jsf:id="head">
<title>Facelet Title</title>
<meta charset="UTF-8"/>
<style type="text/css">
.btn{
background-color: #FFF;
border: solid 2px #303030;
color: #303030;
}
.btn-red{
background-color: #C30563;
}
</style>
<script type="text/javascript">
function clickMe() {
document.getElementById("btn").addClass("btn-red");
}
</script>
</head>
<body jsf:id="body">
<form jsf:id="frm" jsf:prependId="false">
<a jsf:id="btn" type="submit" jsf:value="Click me" jsf:action="#{cbMain.doSomething()}" jsf:onclick="clickMe()" class="btn">
<f:ajax execute="@form" render="frmRender"/>
</a>
</form>
</body>
</html>Back Bean
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named("cbMain")
@SessionScoped
public class TesteBean implements Serializable{
private int i = 0;
public void doSomething(){
System.out.println( i++ );
}
}这是在DOM中生成的行
<a id="btn" href="#" onclick="jsf.util.chain(this,event,'clickMe()','mojarra.ab(this,event,\'action\',\'@form\',\'frmRender\')');return false" type="submit" class="btn">Click me</a>在一个新的清洁项目中,它对我也不起作用。
发布于 2015-01-23 12:43:26
在基本HTML中,onclick属性必须表示一个JavaScript表达式。但是,您只指定了函数名。这会导致JS问题。就好像你在做
<script>clickHome;</script>添加括号使其成为一个真正的表达式:
<a ... jsf:onclick="clickHome()">这不是JSF相关的问题。在基本HTML中尝试相同的操作时,您可能会遇到完全相同的问题。
<a ... onclick="clickHome">还请参阅JSF生成的HTML输出,通过右键单击,查看See浏览器中的源代码。在将来的问题中,尝试在基本HTML中做同样的事情。JSF就是在这个问题的上下文中“只是”一个HTML代码生成器。最终由你自己负责生成正确的HTML输出。
https://stackoverflow.com/questions/28109265
复制相似问题