代码之家  ›  专栏  ›  技术社区  ›  Steve Diarrassouba

使用Liferay选择框

  •  0
  • Steve Diarrassouba  · 技术社区  · 7 年前

    我明确表示,我是Liferay 7的初学者。我已创建了一个选择框,用于恢复我的组织。但我想创建第二个选择框,它依赖于第一个选择框。当我选择了一个组织后,我希望看到我所选择的组织的子组织。 我不知道从哪里开始;( 我希望我已经说清楚了:)。

    我的portlet:

    `公共类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 回复  |  直到 7 年前
        1
  •  1
  •   Marco Mercuri    7 年前

    您可以使用ajax调用来实现这一点。

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

    我有州和市的代码。您可以根据需要将其更改为组织和子组织。

    在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
            }
        }
    }