0
クラスMETA_INFどちらBindingResultやBean名用プレーンなターゲット・オブジェクトのXYZ "利用可能tは
@Entity
@Table(name = "META_INF")
@Inheritance(strategy = InheritanceType.JOINED)
public class META_INF {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(nullable = false)
private Boolean locked;
@ManyToOne
private USER lockedBy;
@JoinColumn(nullable = false)
@ManyToOne
private USER createBy;
@Column(nullable = false)
private Boolean active = true;
private String version;
@Column(nullable = false)
private Boolean log;
@JoinColumn(nullable = false, name = "CONTEXTE")
@ManyToOne
private PRM_CONTEXTE CONTEXTE;
@DateTimeFormat(pattern = "dd-MM-yyyy hh:mm:ss")
@Column(nullable = false, name = "INSIDE_CREATION_TS")
@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentLocalDate")
private LocalDate INSIDE_CREATION_TS;
}
クラスPIL_P_APPLCTN
@Entity
@Table(name = "PIL_P_APPLCTN")
public class PIL_P_APPLCTN extends META_INF {
@NotBlank
@Column(unique = true, nullable = false, name = "APPLCTN_CD")
private String APPLCTN_CD;
@NotBlank
@Column(nullable = false, name = "APPLCTN_ID")
private String APPLCTN_ID;
@NotBlank
@Column(nullable = false, name = "APPLCTN_DS")
private String APPLCTN_DS;
@NotNull
@Digits(integer = 20, fraction = 0)
@Column(nullable = false, name = "DECLG_IDNTFNT_NU")
private BigDecimal DECLG_IDNTFNT_NU;
}
コントローラーのAppController
@Controller
@RequestMapping("/")
@SessionAttributes("roles")
public class AppController {
static final Logger logger = LoggerFactory.getLogger(AppController.class);
@Autowired
@Qualifier("pIL_P_APPLCTN_SERVICE")
IService<PIL_P_APPLCTN> appService;
@Autowired
@Qualifier("pRM_CONTEXTE_SERVICE")
IService<PRM_CONTEXTE> cntxtService;
@Autowired
MessageSource messageSource;
@RequestMapping(value = { "/addApp" }, method = RequestMethod.GET)
public String newApp(ModelMap model) {
PIL_P_APPLCTN application = new PIL_P_APPLCTN();
List<PRM_CONTEXTE> cntxt = cntxtService.findAllOBJECTS();
model.addAttribute("cntxt", cntxt);
model.addAttribute("application", application);
model.addAttribute("edit", false);
model.addAttribute("loggedinuser", getFullName());
return "formApp";
}
@RequestMapping(value = { "/addApp" }, method = RequestMethod.POST)
public String saveApp(@Valid PIL_P_APPLCTN application, BindingResult result, ModelMap model) {
if (result.hasErrors()) {
return "formApp";
}
if (!appService.isObjectFieldUnique(application.getId(), application.getAPPLCTN_CD())) {
FieldError app_cdError = new FieldError("application", "APPLCTN_CD", messageSource.getMessage("non.unique.APPLCTN_CD",
new String[] { application.getAPPLCTN_CD() }, Locale.getDefault()));
result.addError(app_cdError);
return "formApp";
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");
Date dt1 = new Date();
String dt2 = formatter.format(dt1);
Date date = null;
LocalDate dateF = null;
try {
date = formatter.parse(dt2);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
dateF = new LocalDate(date);
application.setCreateBy(userService.findBySSO(getPrincipal()));
application.setINSIDE_CREATION_TS(dateF);
application.setLocked(false);
application.setLockedBy(null);
application.setVersion("INITIAL");
application.setLog(false);
//application.setCONTEXTE(cntxtService.findById(application.getCONTEXTE().getId()));
appService.saveOBJECT(application);
model.addAttribute("loggedinuser", getFullName());
// return "success";
return "redirect:/appli";
}
}
属性のrequesとして
formApp.jsp
<form:form method="POST" modelAttribute="application" class="form-horizontal form-label-left" >
<form:input type="hidden" path="id" id="id"/>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="active">ACTIVE</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<div class="">
<form:checkbox id="active" path="active" name="active" class="js-switch" />
<form:errors path="active"/>
</div>
</div>
</div>
<div class="item form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="APPLCTN_CD">APPLCTN CD </label>
<div class="col-md-6 col-sm-6 col-xs-12">
<form:input type="text" path="APPLCTN_CD" id="APPLCTN_CD" name="APPLCTN_CD" class="form-control col-md-7 col-xs-12"/>
<form:errors path="APPLCTN_CD"/>
</div>
</div>
<div class="item form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="APPLCTN_ID">APPLCTN ID
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<form:input type="text" path="APPLCTN_ID" id="APPLCTN_ID" name="APPLCTN_ID" class="form-control col-md-7 col-xs-12"/>
<form:errors path="APPLCTN_ID"/>
</div>
</div>
<div class="item form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="APPLCTN_DS">APPLCTN DS
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<form:input type="text" path="APPLCTN_DS" id="APPLCTN_DS" name="APPLCTN_DS" class="form-control col-md-7 col-xs-12"/>
<form:errors path="APPLCTN_DS"/>
</div>
</div>
<div class="item form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="DECLG_IDNTFNT_NU">DECLG IDNTFNT NU
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<form:input type="text" path="DECLG_IDNTFNT_NU" id="DECLG_IDNTFNT_NU" name="DECLG_IDNTFNT_NU" class="form-control col-md-7 col-xs-12"/>
<form:errors path="DECLG_IDNTFNT_NU"/>
</div>
</div>
<div class="item form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12" for="CONTEXT">CONTEXT</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<form:select itemValue="id" path="CONTEXTE" itemLabel="CONTEXTE_CD" items="${cntxt}" class="select2_single form-control" tabindex="-1" />
<form:errors path="CONTEXTE"/>
</div>
</div>
<div class="ln_solid"></div>
<div class="form-group">
<div class="col-md-6 col-md-offset-3">
<c:choose>
<c:when test="${edit}">
<button type="button" class="btn btn-primary" onClick="location.href='<c:url value='/appli' />'">Annuler</button>
<button type="submit" class="btn btn-success" onClick="location.href='<c:url value='/edtApp' />'">Modifier</button>
</c:when>
<c:otherwise>
<button type="button" class="btn btn-primary" onClick="location.href='<c:url value='/appli' />'">Annuler</button>
<input type="submit" class="btn btn-success" value="Ajouter"/>
</c:otherwise>
</c:choose>
</div>
</div>
</form:form>
messages.properties
NotBlank.pil_p_applctn.APPLCTN_CD=Champ obligatoire !
NotBlank.pil_p_applctn.APPLCTN_ID=Champ obligatoire !
NotNull.pil_p_applctn.APPLCTN_DS=Champ obligatoire !
NotBlank.pil_p_applctn.DECLG_IDNTFNT_NU=Champ obligatoire !
Digits.pil_p_applctn.DECLG_IDNTFNT_NU=Seules les données numériques sont acceptées avec max 20 chiffres !
non.unique.APPLCTN_CD={0} existe déjà !
私は形式の有効なデータをinseringよ、オブジェクトがDBに固執し、私がいる時れます間違ったデータを挿入しようとすると、エラーメッセージmessages.propertiesは表示されず、このエラーが発生します。
Caused by: java.lang.RuntimeException: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'application' available as reques
t attribute
at io.undertow.servlet.spec.RequestDispatcherImpl.forwardImpl(RequestDispatcherImpl.java:217)
at io.undertow.servlet.spec.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:106)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1243)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)
... 70 more
Caused by: java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'application' available as request attribute
at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:144)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus(AbstractDataBoundFormElementTag.java:168)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getPropertyPath(AbstractDataBoundFormElementTag.java:188)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getName(AbstractDataBoundFormElementTag.java:154)
at org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.writeDefaultAttributes(AbstractDataBoundFormElementTag.java:117)
at org.springframework.web.servlet.tags.form.AbstractHtmlElementTag.writeDefaultAttributes(AbstractHtmlElementTag.java:422)
at org.springframework.web.servlet.tags.form.InputTag.writeTagContent(InputTag.java:142)
at org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal(AbstractFormTag.java:84)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:80)
at org.apache.jsp.WEB_002dINF.views.formApp_jsp._jspx_meth_form_005finput_005f0(formApp_jsp.java:2155)
at org.apache.jsp.WEB_002dINF.views.formApp_jsp._jspService(formApp_jsp.java:554)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:402)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:346)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:81)
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undertow.jsp.JspFileHandler.handleRequest(JspFileHandler.java:32)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:265)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchToPath(ServletInitialHandler.java:200)
at io.undertow.servlet.spec.RequestDispatcherImpl.forwardImpl(RequestDispatcherImpl.java:193)
... 78 more
任意のアドバイスのおかげでは...ここから
hi モデルに属性を追加するとエラーが表示されません** java.lang.IllegalStateException:BindingResultもBean名 'application'のプレーンターゲットオブジェクトもリクエスト属性**として利用できませんが、カスタムメッセージのエラーもありません – FuSsA
義務的なフィールドエラーが1よりも大きい場合は、新しいPIL_P_APPLCTN()オブジェクトを渡さないようにしてください。これは、エラーを含むオブジェクトをオーバーライドし、 'model.addAttribute(" application "、application ); '私は' return "formApp"の前に置いていました。 ' – KLajdPaja
stiil cantはカスタムメッセージを表示します:/ – FuSsA