使用JSP中的参数调用Javascript函数

时间:2013-04-30 08:19:12

标签: java javascript jsp liferay alloy-ui

我有这样的表格......

<aui:form action="<%= generateRuleURL.toString() %>" name="rulesForm" method="post">
<aui:button-row>
<aui:button type="button" id="End" value="End"  />
<aui:button type="button" id="And" value="And" />
<aui:button type="button" id="Or" value="Or" />
</aui:button-row>
</aui:form>

在jsp文件视图中。

这样的JS ......

document.getElementById( 'End' ).onclick = function()
{
    var x=document.forms["rulesForm"]["FirstRuleElement"].value;
    System.out.println("Prova : " + x);
    var y=document.forms["rulesForm"]["FirstRuleAttribute"].value;
    System.out.println("Prova : " + y);
    var z=document.forms["rulesForm"]["Operator"].value;
    System.out.println("Prova : " + z);
    alert("First name must be filled out");

    if (x==null || x=="" || y==null || y=="" || z==null || z=="")
    {
      alert("First name must be filled out");
      return false;
    }

    AUI().one("#<portlet:namespace/>rulesForm").action='<%= generateRuleURL.toString()%>';

    document.forms["rulesForm"].submit();
};

submit.js档案中。

从其中一个按钮调用此方法以及其他按钮的其他方法应该怎么做?我尝试了很多,但这没有起作用..

例如:

调用commonFunction js: onclick="commonFunction('End')" // End是一个要作为参数传递的字符串

等等......没有结果!

有人可以帮我一把吗?

1 个答案:

答案 0 :(得分:1)

您可以通过以下两种方式实现目标:

  1. 一种方法是将您的javascript代码放入view.jsp并使用<portlet:namespace/>,如下所示:

    <aui:script>
    document.getElementById('<portlet:namespace/>End').onclick = function()
    {
        var x=document.forms["<portlet:namespace/>rulesForm"]["<portlet:namespace/>FirstRuleElement"].value;
        System.out.println("Prova : " + x);
        var y=document.forms["<portlet:namespace/>rulesForm"]["<portlet:namespace/>FirstRuleAttribute"].value;
        System.out.println("Prova : " + y);
        var z=document.forms["<portlet:namespace/>rulesForm"]["<portlet:namespace/>Operator"].value;
        System.out.println("Prova : " + z);
        alert("First name must be filled out");
    
        if (x==null || x=="" || y==null || y=="" || z==null || z=="")
        {
          alert("First name must be filled out");
          return false;
        }
    
        AUI().one("#<portlet:namespace/>rulesForm").action='<%= generateRuleURL.toString()%>';
    
        document.forms["<portlet:namespace/>rulesForm"].submit();
    };
    </aui:script>
    

    我们需要使用<portlet:namespace/>,因为您正在使用liferay的aui标记,例如<aui:form><portlet:namespace/>添加到nameid属性。
    同样使用<portlet:namespace/>可确保元素的idname属性不会与@OlafKock在其comment中提及的页面上的其他元素冲突。

    < / LI>
  2. 另一种方法是,如果您想使用javascript文件submit.js,请在该文件中创建一个javascript function

    function submitMyForm(portletNamespace) {
    
        var x=document.forms[portletNamespace + "rulesForm"][portletNamespace + "FirstRuleElement"].value;
        System.out.println("Prova : " + x);
        var y=document.forms[portletNamespace + "rulesForm"][portletNamespace + "FirstRuleAttribute"].value;
        System.out.println("Prova : " + y);
        var z=document.forms[portletNamespace + "rulesForm"][portletNamespace + "Operator"].value;
        System.out.println("Prova : " + z);
        alert("First name must be filled out");
    
        if (x==null || x=="" || y==null || y=="" || z==null || z=="")
        {
          alert("First name must be filled out");
          return false;
        }
    
        AUI().one("#<portlet:namespace/>rulesForm").action='<%= generateRuleURL.toString()%>';
    
        document.forms[portletNamespace + "rulesForm"].submit();
    }
    

    view.jsp调用此函数:

    <aui:form action="<%= generateRuleURL.toString() %>" name="rulesForm" method="post">
        <aui:button-row>
            <aui:button type="button" id="End" value="End" onClick="submitMyForm('<portlet:namespace/>')" />
            <aui:button type="button" id="And" value="And" />
            <aui:button type="button" id="Or" value="Or" />
        </aui:button-row>
    </aui:form>
    
  3. 希望这有助于你前进。