JSF 1.2 + Javascript + AJAX

时间:2014-10-01 13:35:53

标签: javascript jsf-1.2 ajax4jsf

我使用jsf 1.2,richfaces 3.3.3。我已经编写了javascript函数,并想在on4j:commandButton上使用它。

功能:

function simpleFunction(){
    var x = document.getElementById('check').value;
    if(x != null){
        alert("NOT NULL");
    }
} 

形式:

 <h:form>
        <h:inputText id="check" value="myvalue" style="display: none"/>
        <h:outputText value="#{crossReferenceMsg.min3}" style="font-size: 11px; color:red; font-weight: bold"/><br/>
        <h:outputLabel value="#{crossReferenceMsg.searchName}" for="tbSearchFilter"
                       style="font-size: 14px;font-weight: bold;"/>
        <h:inputText id="tbSearchFilter" value="#{CrossReferenceBean.searchText}">
        </h:inputText>
        <a4j:commandButton id="btnSearchCrossReference"
                           onclick="simpleFunction()"
                           action="#{CrossReferenceBean.search}"
                           value="#{crossReferenceMsg.search}"
                           reRender="dvFilters"/>
        <rich:messages for="tbSearchFilter"/>
        <rich:hotKey key="return"
                     handler="#{rich:element('btnSearchCrossReference')}.click()"
                     selector="#dvSearchCrossReference"/>
    </h:form>

但它不起作用 - 在GoogleChrome调试器中我可以看到,变量x = undefined。我在哪里弄错了?

1 个答案:

答案 0 :(得分:0)

prependId="false"添加到您的h:form

在这种情况下,默认情况下,表单id(类似于j_idt ...,由jsf自动设置)将预先嵌入到表单中嵌套的所有组件ID。所以你的实际h:inputText ID不是“检查”。你可以看到,如果你检查你的页面的html源。