gpt4 book ai didi

java - Struts2 操作 > JSP > 操作

转载 作者:行者123 更新时间:2023-11-30 04:26:42 29 4
gpt4 key购买 nike

我正在努力做到这一点

  1. 在我的操作中从数据库获取对象列表(确定)
  2. 在 JSP 上打印(确定)
  3. 此列表作为 JSP 中的可编辑表出现。我想修改然后将其提交回同一操作以将其保存在我的数据库中(失败。当我使用 <s:submit action="myaction" method="mymethod">我之前从数据库填充的列表现在为空。我该如何解决这个问题?

我发现一些主题谈论 struts2 拦截器在 myaction 中注入(inject)数据带有反射(reflection)。

public class CurrentOra {
private int idCommessa;
private String descrizioneCommessa;
private int idCliente;
private String descrizioneCliente;
private List<OreTimesheetGiorno> orePerCommessa;

public int getIdCommessa() {
return idCommessa;
}
}

public class OreTimesheetGiorno {

private int numeroGiorno;
private OreTimesheet oreTimesheet;
public int getNumeroGiorno() {
return numeroGiorno;
}
public void setNumeroGiorno(int numeroGiorno) {
this.numeroGiorno = numeroGiorno;
}
public OreTimesheet getOreTimesheet() {
return oreTimesheet;
}
public void setOreTimesheet(OreTimesheet oreTimesheet) {
this.oreTimesheet = oreTimesheet;
}

}




这是我的对象结构,在 JSP 中我用它打印

<s:iterator value="listOre" >

<tr class="giornoSettimana giornoUno">

<td><s:property value="descrizioneCliente"/></td>
<td><s:property value="descrizioneCommessa"/></td>

<s:iterator value="orePerCommessa">
<td>
<input type="text"
class="oreConsuntivazione"
maxlength="2"
giorno = "<s:property value="numeroGiorno" />"
value="<s:property value="oreTimesheet.numeroOre" />">
</td>

</s:iterator>

</tr>

</s:iterator>

基本上,我需要迭代向客户展示以及每个客户的工作时间。然后我应该可以编辑每小时并将其保存回数据库

最佳答案

  • giorno不是 HTML input 的有效属性领域;
  • CurrentOra缺少 getterssetters (但我想您在此处发帖时只是忽略了它们,顺便说一句,请仔细检查它们);

也就是说,要回传值,您需要指定 index List的通过使用IteratorStatus.index属性。

假设用户只能输入小时数,而不能更改天数,请尝试如下:

<s:iterator value="listOre" >

<tr class="giornoSettimana giornoUno">

<td><s:property value="descrizioneCliente"/></td>
<td><s:property value="descrizioneCommessa"/></td>

<s:iterator value="orePerCommessa" status="ctr" >
<td>
<s:hidden name="orePerCommessa[%{#ctr.index}].numeroGiorno" />

<s:property value="numeroGiorno" />

<s:textfield
name="orePerCommessa[%{#ctr.index}].oreTimesheet.numeroOre"
cssClass = "oreConsuntivazione"
maxlength="2" />

</td>

</s:iterator>

</tr>

</s:iterator>

顺便说一句,这不会阻止用户破解您的代码并更改orePerCommessa.numeroGiorno的隐藏值。 ;如果保护它们免受用户操作很重要,请在从数据库读取后将它们放入 session 中,然后在 JSP 中显示它们(使用 <s:property/> ),但不要发布它们(不要放置 <s:hidden /> ),然后 while发回页面,从 session 中检索它们并以某种方式匹配它们(例如,您可以使用 HashMap 将它们作为值,并将计数器存储为 JSP 中的键)...这样用户就可以搞乱键,而不是值。

关于java - Struts2 操作 > JSP > 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15706576/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com