我需要將一個簡單的 json 物件發布到 Struts 2 操作,你能告訴我我想念這個嗎:
要保存的 Java 物件:
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private Integer id;
@Column(name = "code")
private String code;
@Column(name = "libelle_fr")
private String libelleFr;
@Column(name = "libelle_nl")
private String libelleNl;
我使用 alpine.js 但它是一個細節,發送請求的腳本是這樣的:
<script>
function postForm() {
return {
indicateurDictionnaireForm: {
libelleFr: '',
libelleNl: '',
code: ''
},
message: '',
submitData() {
this.message = ''
fetch('<%= request.getContextPath() %>/mesures.ce.save.action', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
dataType:"json",
body: JSON.stringify(this.indicateurDictionnaireForm)
})
.then(() => {
this.message = 'Form sucessfully submitted!'
})
.catch(() => {
this.message = 'Ooops! Something went wrong!'
})
}
}
}
</script>
發送到操作的 json 是:
{
"libelleFr":"fr",
"libelleNl":"nl",
"code":"sample"
}
從我的操作檔案中有我從前面呼叫的方法:
private IndicateurDictionnaire indicateurDictionnaireForm;
// Action to save an indicateurDictionnaireto database
@Action(value = "mesures.indicateurs.ce.save", results = {
@Result(name = "success", type = "json", params = {"root", "indicateurDictionnaireForm"}),
@Result(name = "input", type = "tiles", params = {"root", "indicateurDictionnaireForm"}, location = "viewMesureCoutUnitaire")})
public String save(IndicateurDictionnaire indicateurDictionnaire, String libelleFr, String libelleNl, String code) {
dictionnaireIndicateurBo.saveIndicateurDictionnaire(indicateurDictionnaire);
return SUCCESS;
}
根據 struts2 json 插件,如果格式正確,json 應該映射到我的物件,但如果我查看除錯,則欄位為空。
你知道我怎樣才能至少在我的操作方法中看到 json 請求嗎?
uj5u.com熱心網友回復:
映射到操作的方法不使用方法簽名中的任何引數。因此,您需要洗掉這些引數并將json攔截器添加到操作配置中。
這個欄位被json 攔截器用作root物件,不應該是null.
IndicateurDictionnaire indicateurDictionnaire;
// getter and setter should be added
@Action(value = "mesures.indicateurs.ce.save", results = {
@Result(name = "success", type = "json", params = {"root", "indicateurDictionnaire"})
}, interceptorRefs = @InterceptorRef(value = "json", params = {"root", "indicateurDictionnaire"}))
public String save() {
dictionnaireIndicateurBo.saveIndicateurDictionnaire(indicateurDictionnaire);
return SUCCESS;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367705.html
標籤:爪哇 json jsp 支柱2 struts2-jquery
上一篇:HJSON只會決議整數或“空”值
