Alloy UI 复选框 return 数据类型

Alloy UI checkbox return datatype

如果我将下面提到的代码与 alloy UI 一起写入我的 jsp 文件,我将在 Java [=20] 中接收什么数据类型=]作为回应。

我必须编写什么代码来检索我的选择?

    <%
            for (Manufacturer manufacturer : manufacturers) {
        %>
        <aui:input type="checkbox" name="location"
            value="<%=manufacturer.getManufacturerId()%>"
            label="<%=manufacturer.getName()%>"/>
        <%
            }
        %>

调用String[] locationValues = ParamUtil.getParameterValues(request, "locationCheckbox");可以得到校验值

这是测试结果(假设您检查了制造商 A 和制造商 C):

view.jsp:

<portlet:actionURL var="actionURL" name="myAction" />

<aui:form action="<%=actionURL %>">
    <aui:input type="checkbox" id="a123" label="Manufacturer A" name="location" value="a123"></aui:input>
    <aui:input type="checkbox" id="b456" label="Manufacturer B" name="location" value="b456"></aui:input>
    <aui:input type="checkbox" id="c789" label="Manufacturer C" name="location" value="c789"></aui:input>
    <aui:button type="submit" value="Submit"></aui:button>
</aui:form>

测试Java代码:

public void myAction(ActionRequest request, ActionResponse response){
    Enumeration<String> params = request.getParameterNames();
    while (params.hasMoreElements() )
    {
        String para_name = (String)params.nextElement();
        if(para_name.startsWith("location")){
            System.out.println(para_name);
        }
    }

    System.out.println("location-getString:" + ParamUtil.getString(request, "location"));
    System.out.println("location-getParameterValues:" + Arrays.toString(ParamUtil.getParameterValues(request, "location")));

    System.out.println("locationCheckbox-getString:" + ParamUtil.getString(request, "locationCheckbox"));
    System.out.println("locationCheckbox-getParameterValues:" + Arrays.toString(ParamUtil.getParameterValues(request, "locationCheckbox")));
}

控制台结果:

location
locationCheckbox
location-getString:a123
location-getParameterValues:[a123, b456, c789]
locationCheckbox-getString:a123
locationCheckbox-getParameterValues:[a123, c789]

备注: 我用 Liferay 6.2 测试了上面的代码。它为每个 <aui:input type="checkbox" ... />:

创建两个客户端输入字段
<input type=hidden name="<portlet:namespace/>location" ... />
<input type=checkbox name="<portlet:namespace/>locationCheckbox" ... />

进一步行动: 如果您想设置 pre-checked 值,请将以下示例代码添加到 doView 函数:

List<String> preCheckedLocation = new ArrayList<String>();
preCheckedLocation.add("a123");
preCheckedLocation.add("c789");
renderRequest.setAttribute("preCheckedLocation",preCheckedLocation);

checked=true|false 添加到 view.jsp 中的 <aui:input> 字段:

<%@ page import="java.util.List"%>

...

<%
    List<String> preCheckedLocation = (List<String>) request.getAttribute("preCheckedLocation");
%>

...

<aui:form action="<%=actionURL %>">
    <aui:input type="checkbox" id="a123" label="Manufacturer A" name="location" value="a123" checked='<%= preCheckedLocation.contains("a123") %>' ></aui:input>
    <aui:input type="checkbox" id="b456" label="Manufacturer B" name="location" value="b456" checked='<%= preCheckedLocation.contains("b456") %>' ></aui:input>
    <aui:input type="checkbox" id="c789" label="Manufacturer C" name="location" value="c789" checked='<%= preCheckedLocation.contains("c789") %>' ></aui:input>
    <aui:button type="submit" value="Submit"></aui:button>
</aui:form>