java - 使用 Liferay 选择框

标签 java select liferay

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

我的门户组件:

`公共(public)类 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>

最佳答案

您可以使用 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
        }
    }
}

关于java - 使用 Liferay 选择框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48169025/

相关文章:

MySQL 连接未按要求工作

python - 如何在Python的sqlite3中选择数据列表是所有列的子集

c# - Java BigInteger 到 .NET 中等效的字节数组

java - JPA 中的 Bean 验证 API

java - 使用 bufferreader 在 java 代码中读取 --traceroute 命令时搜索特定单词

mysql select from different tables with if 子句

tomcat - Auto Deployer 如何处理日期时间?

liferay - 如何在Liferay中获取客户端Portlet-ID?

java - DLFileEntry在内存中的大小

java - 寻找有关如何提高 Java 代码片段性能的建议