我确切地知道我是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>
答案 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
}
}
}