java - 将 Action 属性传递给JavaScript函数

原文 标签 java javascript jsp properties struts2

当我尝试将Struts2 <s:property>值用作名为handleChange的JavaScript函数的参数时,我遇到了我的JSP页面的问题,以便可以在此处保存该集合的新值:

<form name="monF" method="get">
    <display:table name="menaces" pagesize="1" requestURI="loadLesCauses.action" decorator="configuration.MyDecorator" class="table table-striped table-bordered table-hover" id="dataTables-example">
        <display:column property="idmenace" title="id menace" />
        <display:column property="lienmenace" title="lien de la menace" media="html" />
    </display:table>
    <s:iterator value="causesmenace" status="rowStatus">
        <h3 class="intro-text text-center">
            <strong><li><s:property value="libellecause" /></li></strong>
        </h3>
        <s:hidden id="idcause" value="idcause" />
        <h2 class="intro-text">impact sur metier</h2>
        <s:select id="impact" name="impact_sur_metier" list="impactsurmetier" value="defaultValue_im" onchange="handleChange_impact(this.value,%{#rowStatus.index});" cssClass="form-control"></s:select>
        <br>
        <h2 class="intro-text">niveau de probabilité</h2>
        <s:select id="probabilite" name="niveau_de_probabilité" list="niveaudeprobabilite" value="defaultValue_np" onchange="handleChange_probabilite('<s:property value=" idcause "/>',this.value,%{#rowStatus.index});" cssClass="form-control"></s:select>
    </s:iterator>
    <button type="submit" onclick="radarRisk()" title="radarRisk">radarRisk</button>
</form>


这是我的JS块:

<script type="text/javascript">
    var tableName = document.getElementByClassName("menaceList");

    function handleChange_probabilite(id, value, nbr) {
        JSSauvegarderCause.sauvegarderCauseProbabilite(value, nbr, afficherValidation);
        alert(id + value + nbr);
    }
    }
</script>


错误信息 :

févr. 22, 2014 9:27:03 PM org.apache.catalina.core.ApplicationDispatcher invoke
Grave: "Servlet.service()" pour la servlet jsp a lancé une exception
org.apache.jasper.JasperException: /vues/menacesView.jsp(129,70) Symbole égal (equal)                 attendu


如果我在<s:property value="idcause"/>事件中删除onchange,则代码可以正常工作。

最佳答案

Struts2不允许使用<s:select ... <s:property .../>/>之类的嵌套标签。您可以在标签属性中使用OGNL表达式。当您使用过

<s:hidden id="idcause" value="idcause" />


value属性评估为OGNL表达式,您需要提供实际值的getter

public String getIdcause(){return idcause;} 


然后使用javascript函数从隐藏字段中获取值

onchange="handleChange_probabilite(document.getElementById('idcause').value,this.value,%{#rowStatus.index});"

关于java - 将 Action 属性传递给JavaScript函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21960921/

相关文章:

java - 禁用 Intellij 将 <p> 添加到我的空注释行

javascript - 如何将Javascript变量传递到HTML文件

javascript - 如何防止jsp执行

java - Java/JSP 中的 Response.End()

java - 使用 Intent 向多个联系人发送消息

java - 为什么我的Jlabels或Jpanels没有显示?

java - 如何为返回实现类型的抽象类编写方法?

javascript - 如何在 ACE 编辑器中禁用装订线单击时的行选择?

javascript - & 字符中断由 php 接收到 json

jsp - 表达式语言中的调用方法