에 대한 기본 메시지를 사용자 정의하는 방법 다음 모델은 다음과 같습니다BigDecimal를
public class myFormData {
private BigDecimal trackingNumber;
@Valid
private List<myCustomRecord> records = new ArrayList<myCustomRecord>();
}
public class myCustomRecord {
//the field also appears here (for child records)
private BigDecimal trackingNumber;
}
내가 저장 할 어떤 점에서이 객체를 수신하는 제어 방법이있다.
public @ResponseBody ValidationResponse save(Model model,
@Valid myFormData formData, BindingResult result,
HttpSession session){
//do stuff
}
난 데 문제는 문자열이 trackingNumber
필드에 전달되는 경우, 오류 메시지가 좋지 않아입니다.
속성 'records [0] .trackingNumber'에 대해 'java.lang.String'형식의 속성 값을 필수 형식 'java.math.BigDecimal'로 변환하지 못했습니다. 중첩 예외가 java.lang.NumberFormatException 인 경우
'java.lang.String'유형의 속성 값을 'trackingNumber'속성의 필수 유형 'java.math.BigDecimal'로 변환하는 데 실패했습니다. 중첩 예외는 java.lang.NumberFormatException입니다.
다른 잠재적 인 합병증은 일부 Ajax 제출을 시도하기 때문에 Spring 양식을 사용하지 않습니다. 내가 String
-trackingNumber
의 데이터 유형을 변경 시도하고 사용자 정의 ConstraintValidator<CheckNumeric, String>
을 쓴 적이
function collectFormData(fields) {
var data = {};
//myFormData
data["trackingNumber"] = <<some value here>>;
for (var i = 0; i < fields.length; i++) {
data["records["+i+"].trackingNumber"] = <<some value>>;
//some more data to submit for child records
}
return data;
}
var mData = collectFormData(aSelectedRows);
if (aSelectedRows.length> 0) {
$.post('call_controller_save', mData, function(response) {
if (response.status === 'FAIL') {
displayError(response);
} else {
//SAVE SUCCESSFUL
$('#successMsgs').append("Data Saved");
}, 'json');
}
: 이것은 내가 데이터를 제출하고있어 방법이다. 그 트릭을 ... ValidationMessages.properties
통해 사용자 지정 메시지를 넣을 수 있지만 원하는 데이터 형식을 모델을 유지하고 싶습니다. 오류 메시지를 제어하고 멋지고 사용자 친화적 인 것으로 바꾸는 또 다른 방법이 있습니까?
(나는 또한 NumberFormatException
가능성이 가장 높은 검증 단계 전에, 데이터 바인딩에서 일어나는 이해?하지만 난 여전히 기본 메시지 고정 대해 이동하는 방법을 잘 모르겠어요)
편집 내가 사용을 다음 구성
<bean class="org.springframework.context.support.ResourceBundleMessageSource"
id="messageSource">
<property name="basenames">
<list>
<value>messages</value>
<value>ValidationMessages</value>
</list>
</property>
</bean>
각 속성 파일에는 동일한 내용이 있습니다.
formData.trackingNumber=Invalid format
그러나 맞춤 메시지는 여전히 선택되지 않습니다. 질문 2 :formData
또는 myFormData
이되어야합니까? jsp 페이지에서 사용되는 양식 객체의 클래스 이름이든 이름이든 혼란 스럽습니다.
추가 된 추가 정보 위 . 두 속성 파일 모두'formData.trackingNumber = Invalid format'이 있습니다. 하지만 여전히 기본 오류'유형의 속성 값을 변환하지 못했습니다. '가 표시됩니다. – user1766760