使用Liferay选择框

时间:2018-01-09 13:14:24

标签: java select liferay

我确切地知道我是Liferay 7的初学者。我创建了一个选择框来恢复我的组织。但我想创建一个依赖于第一个选择框的第二个选择框。当我选择一个组织时,我希望看到我所选择的组织的SubOrganisations。 我不知道我必须开始的地方;( 我希望我一直很清楚:)。

我的portlet:

`public class NetcofilmoPortlet扩展了MVCPortlet {

public List<Organization> getOrga() {

    Long companyId = PortalUtil.getCompanyIds()[0];
    Long parentOrgaId = OrganizationLocalServiceUtil.getOrganizationId(companyId, "Crédit Agricole");

    List<Organization> Siege = OrganizationLocalServiceUtil.getOrganizations(companyId, parentOrgaId);

    return Siege;
}

@Override
protected void doDispatch(RenderRequest request, RenderResponse response) throws IOException, PortletException {
    request.setAttribute("listeOrganisations", getOrga());

    super.doDispatch(request, response);
}

}`

<aui:select name="Siege" onChange="submit();" id="Siege">
<aui:option value="" selected="true">---Select---</aui:option>
<c:forEach var="organisation" items="${listeOrganisations}">
    <aui:option value="${organisation.getOrganizationId()}">${organisation.getName()}</aui:option>
</c:forEach>

1 个答案:

答案 0 :(得分:1)

您可以使用ajax调用来实现此目的。

在组织选择上你可以调用onChange方法来调用你的javascript,你可以从Javascript调用ajax调用(传递组织id)并检索子组织并在第二个下拉列表中设置这些值

我有州和城市的代码。您可以根据自己的要求将其更改为org和sub org。

在JSP中:

<select id="state" class="form-control inpt_sty">
<option value="One">One</option>
<option value="Two">Two</option>
<option value="Three">Three</option>
</select>
<select id="city" class="form-control inpt_sty"><option value="">Select City</option></select>

使用Javascript:

$("#state").change(function() {         
    state_id = $(this).val();
    $.ajax({
        url : "<portlet:resourceURL id='CityCall'/>",
        type : 'POST',
        dataType : 'json',
        data : { state_id : state_id},
        success : function(data) {
            console.log(JSON.stringify(data));
            for(var i in data)
            {
                $("#city").append("<option value=" + data[i].city_id + ">" + data[i].city_name + "</option>");
            }
        },
        error : function() {
            console.log("There was an error. Try again please!");
        }
    });
});

在您的portlet类中:

public class BranchLocator extends MVCPortlet {
    @Override
    public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse)throws IOException, PortletException 
    {
        if ("CityCall".equalsIgnoreCase(resourceRequest.getResourceID())) 
        {
             String state_id = resourceRequest.getParameter("state_id");
                //logic to retrieve data
        }
    }
}