我想自动设置根模块视图为true,如果选择了子模块,任何人都可以帮助我,请检查我附带的JSF和Managed Bean代码。设置父数据值设置真如果选择了子选项
JSF代码
<p:dialog widgetVar="assignPermission" id="assignPermissionDlgId">
<p:panel>
<h:form id="form">
<p:dataTable value="#{roleModule.modulesList}" var="modules"
id="tableId">
<p:column headerText="Root Module ID:">
<h:outputText value="#{modules.moduleID}" />
</p:column>
<p:column headerText="Module ID:">
<h:outputText value="#{modules.rootID}" />
</p:column>
<p:column headerText="Module Description:">
<h:outputText value="#{modules.moduleDescription}" />
</p:column>
<p:column headerText="View">
<h:selectBooleanCheckbox id="view" value="#{modules.view}" />
</p:column>
<p:column headerText="Create">
<h:selectBooleanCheckbox id="create" value="#{modules.create}" />
</p:column>
<p:column headerText="Edit">
<h:selectBooleanCheckbox id="edit" value="#{modules.edit}" />
</p:column>
<p:column headerText="Delete">
<h:selectBooleanCheckbox id="delete" value="#{modules.delete}" />
</p:column>
</p:dataTable>
<p:toolbar>
<p:toolbarGroup>
<p:commandButton value="Submit" update=":data"
action="#{roleModule.confirmMethod}" >
<p:confirm header="Confirmation" message="Are you sure?"
icon="ui-icon-alert" />
</p:commandButton>
</p:toolbarGroup>
</p:toolbar>
<p:confirmDialog global="true" showEffect="fade"
hideEffect="explode">
<p:commandButton value="Yes" type="button"
styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
<p:commandButton value="No" type="button"
styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</h:form>
</p:panel>
</p:dialog>
ManagedBean
public void confirmMethod()
{
System.out.println(modulesList.size());
PreparedStatement pst = null;
Connection con = getConnection();
// System.out.println("value check"+applicationShort);
String insert="INSERT INTO role_module_mapping VALUES(?,?,?,?,?,?)";
for(Module list : modulesList)
{
try {
pst=con.prepareStatement(insert);
pst.setInt(1, 0);
pst.setInt(2, list.getModuleID());
pst.setString(3, (list.isCreate())==true? "T" : "F");
pst.setString(4, (list.isEdit())==true? "T" : "F");
pst.setString(5, (list.isDelete())==true? "T" : "F");
pst.setString(6, (list.isView())==true? "T" : "F");
pst.executeUpdate();
// System.out.println("Method called"+value);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
的js
<script type="text/javascript">
$(function() {
$(PrimeFaces.escapeClientId('form:tableId')).on(
"change",
"input[type='checkbox'][name*='edit'], input[type='checkbox'][name*='create'], input[type='checkbox'][name*='delete']",
function() {
var tr = $(this).parent().parent();
var view = tr
.find("input[type='checkbox'][name*='view']");
var create = tr
.find("input[type='checkbox'][name*='create']");
var edit = tr
.find("input[type='checkbox'][name*='edit']");
var deleteBox = tr
.find("input[type='checkbox'][name*='delete']");
if ($(this).is(':checked')) {
view.prop("checked", true);
} else {
if (create.is(':checked') || edit.is(':checked')
|| deleteBox.is(':checked')) {
view.prop("checked", true);
} else
view.prop("checked", false);
}
});
$(PrimeFaces.escapeClientId('form:tableId')).on(
"change",
"input[type='checkbox'][name*='view']",
function() {
var tr = $(this).parent().parent();
var view = tr.find("input[type='checkbox'][name*='view']");
var create = tr.find("input[type='checkbox'][name*='create']");
var edit = tr.find("input[type='checkbox'][name*='edit']");
var deleteBox = tr
.find("input[type='checkbox'][name*='delete']");
if ($(this).is(':not(:checked)')) {
create.prop("checked", false);
edit.prop("checked", false);
deleteBox.prop("checked", false);
}
});
});
</script>
我不明白你在做什么。我无法找到根模块视图和子模块。我的猜测是你想标记用户选择的行的复选框(用#{modules.view})。那是对的吗? –
为这个“根模块”设置一个id属性。**
**,然后为其中的所有模块添加一个更改事件。 $('#rModule')。children()。each(function(){$(this).on('click',function(){$(this).parent()。addClass('active'); })});'。添加一个css类'active',它将设置一些突出显示的颜色,以区分根元素的选择 – dreamweiver
在附加屏幕中有两行(根模块ID和模块ID)根模块ID表示父模块,模块ID表示子ID )如果用户选择子ID需要自动标记父复选框(与#{modules.view}) –