我理解如何更改给定jsf标记的值(例如按钮标签),具体取决于支持bean值。虽然我在想是否有可能根据js函数的返回值设置值。
我会想象像onclick这样的东西:
value =" calljsfunction()"
其中返回值是按钮的值,虽然我找不到任何语法,但是可行。
这样的事情存在吗?
答案 0 :(得分:0)
将Backing bean变量中的按钮值绑定,并在事件preRenderView上初始化变量buttonName
<ui:define name="metadata">
<f:metadata>
<f:event type="preRenderView"
listener="#{myBean.initBean()}" />
</f:metadata>
</ui:define>
<h:commandButton value="#{myBean.buttonName}" action="#{myBean.execute()}" />
@ManagedBean
@RequestScoped
public class MyBean {
private String buttonName;
public String getButtonName() {
return buttonName;
}
public void setButtonName(String buttonName) {
this.buttonName= buttonName;
}
public void initBean(){
setButtonName("Submit");
}
}
答案 1 :(得分:0)
要通过JavaScript设置按钮的值,您可以使用onload事件并设置按钮值 -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>JSF 2</title>
<script>
window.onload = function() {
// write your logic for finding value of the button
document.getElementById("myForm:button").value = "Submit";
// or
// document.getElementById("myForm:button").value = getValue();
// function getValue() { return "submit"; }
}
</script>
</h:head>
<h:body>
<h2>JSF 2</h2>
<h:form id="myForm">Type your name here :
<h:inputText value="#{helloWorld.name}"></h:inputText>
<br />
<br />
<h:commandButton id="button" style="margin-left:120px;" value=""
action="welcome"></h:commandButton>
</h:form>
</h:body>
</html>
您也可以将JavaScript代码放在单独的.js文件中