2016-11-28 34 views
0

我知道如何根據背景bean值來更改給定jsf標記(例如按鈕標籤)的值。雖然我在考慮是否有可能根據js函數的返回值來設置值。帶有js函數的JSF 2設置值

我會想象類似的onclick有:

值=「calljsfunction()」

在返回值將是按鈕的價值,但我無法找到任何語法,那會起作用。

是否有這樣的事情存在?

+2

我覺得不可能。 JavaScript函數可以在頁面加載,onclick等事件上執行,'value'屬性不是事件。如果要實現此功能,請在頁面加載時設置按鈕的值(onload event) –

+0

非常感謝!如果你這樣描述它真的很有意義! – user5918250

回答

0

綁定從後臺bean的變量和事件初始化變量BUTTONNAME preRenderView

<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"); 
    } 
} 
+0

嗨Albin,你確定,你回答了這個問題(是否可以將value參數設置爲js函數的返回值而不是後備bean的返回值)。或者我理解錯誤嗎?感謝你的回答! – user5918250

+0

「我知道如何改變給定的jsf標籤(例如按鈕標籤)的值,具體取決於支持bean的值」 - 這是你問題的一部分,那我就是這樣回答的。 – Albin

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文件中