就像是有什么AutoPopulatingList
,但对Set
?我要显示的数据是使用的关联Set
。
public class Employer implements java.io.Serializable {
private Set<Employee> employees = new HashSet();
}
我已经尝试使用过,AutoPopulatingList
但是在这种情况下,我必须List
在hibernate状态下使用它,这需要我指定list- index
using,Employee.employeeId
并且每当我检索到employees
through时Employee
,列表中的null
元素之间都会有空格,具体取决于Employee.employeeId
。
我需要自动填充集合,因为我需要employees
在创建时动态生成Employer
。当我使用plain时,得到以下内容Set
:
org.springframework.beans.InvalidPropertyException: Invalid property 'employees[0]' of bean class [model.Employer]: Cannot get element with index 0 from Set of size 0, accessed using property path 'employees[0]'
还有其他解决方案吗?
编辑
我正在尝试实现动态表格
您无法Set
在MVC中用作绑定目标,因为无法为其项目创建属性路径。
Map<Integer, YourType>
构建动态表单时应使用。我们已经实现了很多次(所以我知道它正在工作)是这样的:
1, 3, 4, ...
)maxIndex + 1
(总是增加顺序)Map
实施 必须是 实例LinkedHashMap
,使迭代顺序被保存(spring创建默认情况下此实现,如果Map
要autopopulated领域的需求)Map
必须有一些父窗体对象的一部分(即你不能有Map
作为顶级表单对象),因此spring是能够从属性的getter推断泛型类型有很多方法可以使用它。例如,我们有一个特殊的 模板子表单 ,当我们需要动态添加另一个子表单时使用。这种方法可能要复杂一些:
<form:form action="${formUrl}" method="post" modelAttribute="organizationUsersForm">
<%-- ... other fields ... --%>
<div id="userSubforms">
<c:forEach items="${organizationUsersForm.users.entrySet()}" var="subformEntry">
<div data-subform-key="${subformEntry.key}">
<spring:nestedPath path="users['${subformEntry.key}']">
<%@ include file="user-subform.jspf" %>
</spring:nestedPath>
</div>
</c:forEach>
</div>
<button onclick="addSubform(jQuery('#userSubforms'), 'users', 'user', 'userTemplate');">ADD ANOTHER USER</button>
<%-- other form fields, submit, etc. --%>
</form:form>
<div class="hide" data-subform-template="user">
<spring:nestedPath path="userTemplate">
<%@ include file="user-subform.jspf" %>
</spring:nestedPath>
</div>
<script>
function addSubform(subformContainer, subformPath, templateName, templatePath) {
// Find the sequence number for the new subform
var existingSubforms = subformContainer.find("[data-subform-key]");
var subformIndex = (existingSubforms.length != 0) ?
parseInt(existingSubforms.last().attr("data-subform-key"), 10) + 1 : 0;
// Create new subform based on the template
var subform = jQuery('<div data-subform-key="' + subformIndex + '" />').
append(jQuery("[data-subform-template=" + templateName + "]").children().clone(true));
// Don't forget to update field names, identifiers and label targets
subform.find("[name]").each(function(node) {
this.name = subformPath + "["+ subformIndex +"]." + this.name;
});
subform.find("[for^=" + templatePath + "]").each(function(node) {
this.htmlFor = this.htmlFor.replace(templatePath + ".", subformPath + "["+ subformIndex +"].");
});
subform.find("[id^=" + templatePath + "]").each(function(node) {
this.id = this.id.replace(templatePath + ".", subformPath + "["+ subformIndex +"].");
});
// Add the new subform to the form
subformContainer.append(subform);
}
</script>
现在,您可以问 “用户如何删除子表单” ?如果子表单JSPF包含以下内容,这将非常简单:
<button onclick="jQuery(this).parents('[data-subform-key]').remove();">DELETE USER</button>
我有一些组合框,它们在表单中具有预定义的值。但是,当用户提交表单并且我使用以下方法重置时,它工作正常: 这将在大多数区域完美地重置表单,并且组合框将再次用预定义的值重新填充,但是,如果您将值保持在新表单中并再次提交,您将收到一个“无法读取空的属性'0'”错误 我如何预填充值: 为避免此错误,用户当前需要做的是在组合框中重新选择当前选择的内容。如果我回答了以下问题之一,我觉得我可以避免这个问题: A
我在几个表单上遇到了chrome自动填充行为的问题。 表单中的字段都有非常常见和准确的名称,如“email”、“name”或“password”,它们还设置了。 autocomplete标志已成功禁用了autocomplete行为,在该行为中,当您开始键入时会显示下拉值,但没有更改Chrome将字段自动填充为的值。 这个行为是可以的,除非chrome不正确地填充输入,例如用电子邮件地址填充电话输入
问题内容: 我已经看到这个问题在互联网上流传,但是我还没有找到可行的解决方案。基本上,我想加载我的应用程序并按下一个按钮;然后,该按钮操作将在已加载到Web视图中的网站中填写用户名和密码(或等待onPageFinished)。最后,登录页面上的提交按钮将被激活。 据我了解,这可以通过使用loadUrl(javascript)进行Java注入来完成,但是我不知道用Java命令填写字段是什么。对于iO
我看到了关于如何从SMS中检索应用程序密码字段的OTP的IOS12文件API。但我好像找不到另一边的文件...将OTP发送给用户。IOS可以检测到的OTP的标准是什么,供用户自动填充。例如,是否有一个字符限制或某种模式必须遵循。 我指的是这个iOS功能https://9to5mac.com/2018/06/04/safari-security-code-auto-fill/ 具体地说,这个API要
问题内容: 您如何判断浏览器是否自动填充了文本框?尤其是用户名和密码框可自动填充页面加载。 我的第一个问题是页面加载序列何时发生?是在document.ready之前还是之后? 其次,我该如何使用逻辑找出这种情况是否发生?它不是我想阻止这种情况发生,只是挂接到事件中。最好是这样的: 如果可能的话,我希望看到一个jsfiddle显示您的答案。 问题答案: 问题是自动填充由不同的浏览器处理。有些派遣变
嘿,我想做一些计算器,可以用自动填充来计算总价。首先我选择选项选择计划,然后选择计划后将自动生成基本价格,然后我输入折扣值,然后将自动生成总价格(基本价格折扣)。如何在我的代码中实现这一点: 这里是我的HTML: 我的JS: