1

我正在开发一个 Liferay portlet。我使用 AlloyUI 表单。这是 portlet 的代码(称为 provision-portlet;我是法国人,所以注释是法语的,但我尝试用英语编写代码):

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>

<%@ page import="org.jdom2.*, org.jdom2.input.*, org.jdom2.output.*" %>
<%@ page import="java.io.File, java.io.FileReader, java.io.Reader" %>
<%@ page import="java.util.List" %>
<%@ page import="java.lang.Exception, java.io.FileNotFoundException" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="org.apache.commons.lang3.*" %>

<%
System.out.println("view.jsp");
%>

<portlet:defineObjects/>
<!-- déclenche l'appel à ProvisionPortlet::processOrgTemplate en sortie de la page -->
<portlet:actionURL name="processOrgTemplate" var="processOrgTemplateURL">
    <!-- passage des paramètres d'entrée au paramètre de sortie -->
    <%
    String workflowID = (String) renderRequest.getAttribute("workflowID");
    %>
    <portlet:param name="workflowID" value="<%= workflowID %>" />
</portlet:actionURL>
<!-- formulaire -->
<aui:form action="<%= processOrgTemplateURL.toString() %>" method="post">
    <!-- alignement des champs -->
    <aui:fieldset column="true">

        <%
        // parsing du document XML passé en paramètre d'entrée
        String parseMe = (String) renderRequest.getAttribute("vCloud:OrgTemplate");
        java.io.StringReader strReader = new java.io.StringReader(parseMe);
        java.io.Reader reader = (java.io.Reader) strReader;
        // on cree une instance de SAXBuilder
        SAXBuilder sxb = new SAXBuilder();
        org.jdom2.Document document = new org.jdom2.Document();
        try {
            // on cree un nouveau document JDOM avec en argument le fichier
            // le parsing est termine
            document = sxb.build(reader);
        } catch (java.io.IOException e) {
            e.printStackTrace();
            return;
        } catch (JDOMException e) {
            e.printStackTrace();
            return;
        }
        // on initialise un nouvel élément root avec l'élément root du document
        Element root = document.getRootElement();
        // lecture du namespace
        Namespace ns = root.getNamespace();
        // lecture des enfants de l'élément racine
        Element steps = root.getChild("steps", ns);
        List<Element> listStep = steps.getChildren("step", ns);
        for (Element step : listStep) {
            Element group = step.getChild("group", ns);
            Element fields = group.getChild("fields", ns);
            Element field = fields.getChild("field", ns);
            String id = field.getAttributeValue("id");
            System.out.println("id = " + id); // DEBUG
            if (id.compareTo("org") == 0) {
                // présentation des organization en menu déroulant 
                Element decorators = field.getChild("decorators", ns);
                Element dropDown = decorators.getChild("drop-down", ns);
                Element array = dropDown.getChild("array", ns);
                List<Element> listSdkObject = array.getChildren("sdk-object", ns);
        %>
                <!-- menu déroulant : org -->
                <aui:select label="<%= id %>" name="<%= id %>">
        <%
                for (Element sdkObject : listSdkObject) {
                    String displayValue = sdkObject.getAttributeValue("display-value");
                    XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
                    String strNotEscaped = xmlOutputter.outputString(sdkObject);
                    String strEscaped = StringEscapeUtils.escapeXml(strNotEscaped);
        %>
                    <aui:option value="<%= strEscaped %>">
                        <liferay-ui:message key="<%= displayValue %>" />
                    </aui:option>
        <%
                }
        %>
                </aui:select>
        <%
            } else if (id.compareTo("template") == 0) {
                // présentation des template en menu déroulant
                Element decorators = field.getChild("decorators", ns);
                Element dropDown = decorators.getChild("drop-down", ns);
                Element array = dropDown.getChild("array", ns);
                List<Element> listSdkObject = array.getChildren("sdk-object", ns);
        %>
                <!-- menu déroulant : vapp -->
                <aui:select label="<%= id %>" name="<%= id %>">
        <%
                for (Element sdkObject : listSdkObject) {
                    String displayValue = sdkObject.getAttributeValue("display-value");
                    XMLOutputter xmlOutputter = new XMLOutputter(Format.getPrettyFormat());
                    String strNotEscaped = xmlOutputter.outputString(sdkObject);
                    String strEscaped = StringEscapeUtils.escapeXml(strNotEscaped);
        %>
                    <aui:option value="<%= strEscaped %>">
                        <liferay-ui:message key="<%= displayValue %>" />
                    </aui:option>
        <%
                }
        %>
                </aui:select>
        <%
            }
        }
        %>

        <!-- bouton de soumission du formulaire -->
        <aui:button-row>
            <aui:button type="submit" value="Send"/>
        </aui:button-row>

    </aui:fieldset>
</aui:form>

出于某种原因,它看起来像这样:

http://postimg.org/image/x3h4vy2cz/

谁能告诉我为什么这些表单不在 portlet 中,我该如何改变它?

谢谢

玛丽

4

1 回答 1

1

这是由于您使用了 aui:fieldset 而发生的。

它将 .ltr .aui-column, .rtl .aui-column-last { float: left; }css添加到导致对齐问题的字段集中。

如果不需要,请删除该字段集,否则会否定提到的 css 效果。

于 2013-11-29T05:37:09.090 回答