0

Liferayに.jspがあり、アプレットでjavascriptを使用していますが、フォームがポートレットに送信された後、サーバー側で、ポートレットがフォームをキャッチせず、追加のメッセージがログに表示されません。

jspページのスニペット:

<script type="text/javascript">
    function processSigning(){
        var applet = document.applets["SignApplet"];
        var path_to_certificate = document.getElementById("certificate").value;
        var pass = document.getElementById("password").value;
        var filePath = document.getElementById("documentSign").value;
        applet.filePath = document.getElementById("documentSign").value;
        applet.profileTestPKCS12(path_to_certificate, pass);

        document.getElementById("file").value = applet.getDocumentString(filePath);
        document.getElementById("sign").value = applet.getSignString();
        document.getElementById("cert").value = applet.getCertificateString();
        document.getElementById("mainForm").submit();


    }
</script>

<form id="mainForm" action="<portlet:actionURL>
          <portlet:param name="COMMAND" value="LOAD"/>
      </portlet:actionURL>">

    <hidden id="file" value="asdf"></hidden>
    <hidden id="cert" value="asdf"></hidden>
    <hidden id="sign" value="asdf"></hidden>
    <input type="button" onClick="processSigning();" value="click here!" >
</form>

ポートレットスニペット:

public void processAction(ActionRequest request, ActionResponse response) throws PortletException {
    session = request.getPortletSession(true);
    String command = request.getParameter("COMMAND");
    System.out.println("command=" + command);
    log.info("command=" + command);


if ("LOAD".equals(command)) {

{
System.out.println("file");
log.info("file");
String fileBase64 = request.getParameter("file");
System.out.println(request.getParameter("file"));
log.info(request.getParameter("file"));
}
}
}
4

3 に答える 3

1

ポートレットクラスがMVCPortletまたはカスタムポートレットクラスを指している場合は、portlet.xmlを確認してください。カスタムポートレットクラスを指している必要があります。

于 2012-05-02T05:49:54.927 に答える
1

このフォームを試して、それがあなたのために働くかどうか確かめてください:

<portlet:actionURL var="myActionURL"></portlet:actionURL>

<form id="mainForm" action="${myActionURL}" method="post">
    <input type="hidden" name="COMMAND" id="COMMAND" value="LOAD" />
    <input type="hidden" name="file" id="file" value="asdf" />
    <input type="hidden" name="cert" id="cert" value="asdf" />
    <input type="hidden" name="sign" id="sign" value="asdf" />
    <input type="button" onClick="processSigning();" value="click here!" >
</form>

お役に立てれば。

于 2012-05-03T05:40:52.160 に答える
0

Liferayポータルは「post」メソッドで動作するため、フォームのメソッドを指定する必要があります。また、リクエストはIDではなく名前で動作するため、非表示のパラメーターの名前も「name」属性で使用する必要があります。

于 2012-05-03T03:25:30.770 に答える