में
t:loop
का उपयोग कर रहा हूं।
t:loop
में मैं बस
source
और
value
पास कर रहा हूं। अब तक इतना अच्छा है, मेरा पृष्ठ ठीक काम कर रहा है। लेकिन जब मैं पेज सबमिट करने का प्रयास करता हूं तो अचानक मुझे अपवाद देता है।
"प्रकार java.lang.String से बलात्कार [addressUsageValue] उपलब्ध coercions टाइप करने के लिए नहीं मिल सका:। ........."
नीचे नमूना कोड
<t:loop source="addressUsageInfo" value="addressUsageValue">
<tr>
<td>${addressUsageValue?.usage}</td>
<td>${addressUsageValue?.address}</td>
<td>${addressUsageValue?.postCode}</td>
<td>${addressUsageValue?.city}</td>
<td>${addressUsageValue?.country}</td>
</tr>
</t:loop>
है
मैंने कुछ गॉगलिंग किया और संदर्भों को नीचे पाया।
http://tapestry.apache.org/5.3.3/apidocs/org/apache/tapestry5/corelib/components/Loop.html https://issues.apache.org/jira/browse/TAP5-609
तो मैं लूप के लिए एनकोडर बनाया है। नीचे नमूना कोड है। toClient()
विधि में मैंने यादृच्छिक रूप से किसी भी मान को वापस कर दिया है और toValue()
विधि में मैं शून्य लौट रहा हूं।
private final ValueEncoder<DtoAddressUsageInfo> addressUssageEncoder =
new ValueEncoder<DtoAddressUsageInfo>() {
public String toClient(DtoAddressUsageInfo value) {
return String.valueOf(value.getUsage());
}
public DtoAddressUsageInfo toValue(String clientValue) {
return null;
}
};
अब मेरा कोड ठीक काम कर रहा है और मैं फॉर्म जमा करने में सक्षम हूं।
यहाँ मेरी संदेह आता
पहले - मुझे समझ में क्यों एनकोडर पाश का उपयोग करते समय की आवश्यकता है नहीं पा रहा हूँ ?? और यदि फॉर्म जमा करना आवश्यक है तो यह अनिवार्य पैरामीटर क्यों नहीं है ??
दूसरा - मैंने बिना किसी तर्क के एन्कोडर को अभी लागू किया है। मैं समझ नहीं पा रहा हूं कि कहां सेव्यू() और toClient() विधि का उपयोग किया जाता है और उद्देश्य क्या है?
तीसरा - जब मैं पृष्ठ सबमिट करता हूं तो फॉर्म को एनकोडर क्यों आवश्यक है ?? जब फ़ॉर्म सबमिट कैसे आप वाकई रूप से मान वस्तुओं वे के लिए हैं करने के लिए जाना कर सकता हूँ:
बहुत धन्यवाद @ हेनिंग। मैं समझ गया :) –