Как отправить форму jsp в Struts2 Action при перезагрузке Jstree (виджет sjt: tree)? - PullRequest
0 голосов
/ 05 июня 2019

Я собираюсь сделать это как можно короче:

У меня есть виджет sjt: tree на моей странице, который обновляется из кода jquery.Мне нужно, чтобы форма jsp, в которой находится дерево, могла быть отправлена ​​в действие Struts2 при перезагрузке дерева.

КОД JSP:


<s:form id="formToSend" name="formToSend" theme="simple" cssClass="yform">

<s:hidden id="instSelected" name="instSelected"/>   
<s:textfield id="inst" name="inst" theme="simple" style="width:85%" onblur="addHiddenValue()"/>

<s:url var="treeDataUrl" action="loadInstTree" namespace="/tree"/>
    <sjt:tree
    id="jsonTree"
    href="%{treeDataUrl}"
    onClickTopics="treeClickedProp"
    formIds="formToSend"
    jstreetheme="apple"
/>
</form>

Функция JS:

function addHiddenValue() {

    var tmp= $('#inst').val();

    $('#instSelected').val(tmp);
    $('#inst').val('');     
    $('#jsonTree').jstree("refresh");

}

Struts.xml

<action name="loadInstTree"
            class="es.nstmt.action.ReloadTreeAction"
method="loadInstTree">
    <result type="json">
        <param name="root">nodes</param>
    </result>
</action>   

ReloadTreeAction.java


public class ReloadTreeAction extends ActionSupport {

    private String instSelected;

    private List<TreeNode> nodes = new ArrayList<TreeNode>();

    public String loadInstTree() {

        final List<TreeNode> org = new ArrayList<TreeNode>();

        if (!("".equals(instSelected)) && (instSelected!= null)) {
            final TreeNode node = new TreeNode();
            node.setId(instSelected);
            node.setIcon("ui-icon-document");
            node.setTitle(instSelected);
            node.setState(TreeNode.NODE_STATE_OPEN);
            org.add(node);
        }

        final TreeNode node = new TreeNode();
        node.setId("Root");
        node.setIcon("ui-icon-document");
        node.setTitle("INST");
        node.setState(TreeNode.NODE_STATE_OPEN);
        node.setChildren(org);

        nodes.add(node);

        return SUCCESS;
    }

    public List<TreeNode> getNodes() {
        return nodes;
    }

    public void setNodes(final List<TreeNode> nodes) {
        this.nodes = nodes;
    }

    public String getInstSelected() {
        return instSelected;
    }

    public void setInstSelected(final String instSelected) {
        this.instSelected= instSelected;
    }

}


Дерево корректно переопределяется, но значение переменной instSelected в коде Javaвсегда null, независимо от того, какой метод перезагрузки дерева я использую.Я также попытался определить reloadTopics внутри дерева sjt :, которое можно было вызвать из js-кода для «публикации», но этот метод только приводит к бесконечному циклу функции addHiddenValue .

Любая помощь будет высоко ценится.Спасибо всем заранее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...