2015-11-19 91 views
2

在服務器端,有一個JNDI資源,我需要從客戶端GWT應用程序讀取。
我知道,我可以做一個GWT RPC調用來動態獲取JNDI資源,但JNDI資源是一個靜態URL,一旦加載頁面,它就不會改變。所以 - 我的想法是在加載頁面時加載JNDI資源。
我發現怎麼可以這樣做一個過時的描述 - 在2011年
https://webtide.com/gwt-and-jndi/
不過,我想知道,這是否有可能爲更多的最新版本GWT的(我使用GWT 2.7。 0)如何從客戶端GWT應用程序讀取JNDI屬性

回答

1

我有同樣的問題。將JNDI參數和一些其他配置值傳遞給GWT應用程序。

訣竅是動態生成GWT主頁(在我的情況下用JSP)。

對我的GWT應用程序的每個初始調用都發送給前端控制器(一個Servlet)用於授權目的和一些其他初始化內容。

然後我得到所有JNDI參數和其他值,將它們放入請求上下文並調用主機頁面JSP。

在我的JSP頁面中,我定義了一個JavaScript散列並使用參數初始化它。

<script type="text/javascript"> 
var my_params = { 
    jndiParam1: '<%= request.getAttribute("jndiParam1") %>', 
    exampleUrl: '<%= request.getAttribute("exampleUrl") %>', 
    jndiParam2: '<%= request.getAttribute("jndiParam2") %>' 
}; 
</script> 

我的GWT應用程序中我有一個類HostPageParameter它使用一個com.google.gwt.i18n.client.Dictionary來訪問JavaScript哈希my_params

public class HostPageParameter { 
    private static final String DICTNAME = "my_params"; 
    private static HostPageParameter instance = null; 

    public static HostPageParameter getInstance() { 
    if(instance == null) { 
     instance = new HostPageParameter(); 
    } 
    return instance; 
    } 

    private Dictionary myParams; 

    private HostPageParameter() { 
    try { 
     myParams = Dictionary.getDictionary(DICTNAME); 
    } catch(MissingResourceException e) { 
     // If not defined 
     myParams = null; 
    } 
    } 

    public String getParameter(String paramName) { 
    return getParameter(paramName, null); 
    } 

    public String getParameter(String paramName, String defaultValue) { 
    String paramValue = null; 

    if(myParams != null && paramName != null) { 
     try { 
     paramValue = myParams.get(paramName); 
     } catch (MissingResourceException e) { 
     // If not defined 
     paramValue = defaultValue; 
     } 
    } 
    return paramValue; 
    } 
} 

,並讀取值你只可以使用:

// Without a default value, If not defined, null is returned. 
final String jndiParam1 = HostPageParameter.getInstance().getParameter("jndiParam1"); 

// With default value. 
final String exampleUrl = HostPageParameter.getInstance().getParameter("exampleUrl", 
    "http://example.com"); 
相關問題