Передайте значение между родительским и дочерним всплывающими страницами / jsp - PullRequest
1 голос
/ 31 марта 2020

У меня есть два jsp файла. В первом файле отображается таблица файла, а в коде у меня есть доступ к значению (идентификатору файла). Также это всплывающее окно.

Если для файла назначена заметка, то заметка отображается в таблице. Если нет, кнопка для добавления заметки отображается на своем месте. После нажатия кнопки мы вызываем код из второго файла, и открывается всплывающее окно.

Я хочу получить доступ к идентификатору файла во втором файле.

Первый файл (поэтому здесь идентификатор, который я вызываю где-то ${na.id} Я получу идентификатор каждого файла):

<div id="files-list-${bean.product.id}">
        <table class="table">
            <thead>
                <tr>
                    <th>File</th>
                    <th>Notes</th>
                </tr>
            </thead>
            <tbody>
                <c:if test="${fn:length(bean.product.files)>0}"> 
                <c:forEach items="${bean.product.files}" var="na">
                    <tr>
                        <td>${na.name}</td>
                        <td>                                
                            <c:if test="${empty na.note}">
                                <t:jquery func="myDialog('filesNotes',${bean.product.id},${bean.product.version})">Add note</t:jquery>
                            </c:if>
                            <c:if test="${not empty na.note}">
                                ${na.note}                          
                            </c:if>
                        </td>
                    </tr>
                </c:forEach>
                </c:if>
            </tbody>
        </table>
    </div>

Второй файл (всплывающее окно) - здесь ${bean.fileId} в URL-адрес действия пуст:

<div id="filesNotes" class="classA" title="Notes">
    <form:form role="form" method="POST" modelAttribute="bean" action="app/updateFile.ajax?id=${bean.product.id}&fileId=${bean.fileId}" onsubmit="return postAjaxForm(this)">
        <form:hidden path="id" value="${bean.product.id}" />
        <input type="hidden" name="version" value="${bean.product.version}" />
        <form:textarea path="product.scratchpad" htmlEscape="true"  cssClass="form-control" rows="17" cols="63"/>
    </form:form>
</div>

Функция myDialog: (учтите, я не очень хорошо разбираюсь с js и внешним интерфейсом :))

function myDialog(id, oid, oversion){

    if($("#"+id).length < 1){
        alert("not found element #"+id);
        return;
    }

    $("#"+id).find("input[name=id]").val(oid);
    var v = $("#"+id).find("input[name=version]");
    if(v.length > 0){
        v.val(oversion);
    }

    var tbody =$("#"+id+"-"+oid);
    var tbody_rpl = $("#"+id).find(".tbody_rpl");


    if(tbody_rpl.length>0){
        tbody_rpl.html("");
        if(tbody.length>0){
            var clonetbody = tbody.clone();
            tbody_rpl.append(clonetbody);
            clonetbody.show();
        }
    }
    $().showDialog(id);
}

1 Ответ

0 голосов
/ 07 апреля 2020

Я сделал это через:

<c:set var="yourVar" value="yourValue" scope="session" />

и затем со скрытым вводом

<form:hidden path="yourVar" value="${sessionScope.yourValue}>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...