0

我在liferay 中有.jsp,并在applet 中使用javascript,但是在将表单发送到portlet 之后,在服务器端,portlet 不会捕获表单,并且不会在日志中显示其他消息。

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

试试这个表格,看看它是否适合你:

<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 回答
1

如果 portlet-class 指向 MVCPortlet 或您的自定义 portlet 类,请检查您的 portlet.xml。它应该指向自定义 portlet 类。

于 2012-05-02T05:49:54.927 回答
0

必须指定表单的方法,因为 Liferay Portal 使用“post”方法,隐藏参数的名称也必须使用“name”属性,因为请求使用名称,而不是 ids

于 2012-05-03T03:25:30.770 回答