我解釋我的問題:爲什麼portlet是renderRequest.setAttribute返回最後一個變量?
我使用的是Liferay 6.1,我試圖理解Documents and Media控制面板的功能。
在我的portlet視圖中,我有一個顯示文檔列表的表格,其中一個字段是修改日期。默認情況下,這個日期是文件修改日期。
在java代碼中,我需要檢查這個日期字段(可選),如果它是空的,我保留舊代碼(顯示文檔的修改日期)如果它不是空的,那麼我想顯示它的值相反(可選日期的值)。
我創建了一個文檔類型,並在稱爲date(可選)的文檔類型中添加了一個字段來手動添加日期。
其中一件事我不明白,當試圖添加一個字段ddm-date類型的日期字段應該有一個默認值,它不能爲空 我錯了嗎?
我的第一個問題,如何設置ddm-date類型爲空?
在創作現場的時候,我把沒有的首選值的CMS自動更改爲默認值,並在表格(添加新文件時)可選日期的選擇數據不包含我看到一個空的值(默認情況下它包含今天的日期)。
所以我用文本字段作爲類型。
我的主要問題:
我顯示了可選的日期,但它會覆蓋所有的創建日期。在顯示屏中,我只獲取可選日期和最後一個。我解釋了何時從「文檔和媒體」控制面板添加文件,並使用可選日期字段(例如值爲「2012/08/01」),表中的所有值均由此值替換。
我用java代碼使用renderRequest.setAttribute
發送了我的變量,我用JSTL - Core <fmt: formatDate value = "$ {optionalDate}" pattern = "MMM yyyy" />
標記在我的視圖中顯示了它。我的portlet也從MVCPortlet擴展而來。
爲什麼doView呈現renderRequest.setAttribute
返回最後一個變量?
在我的Java代碼:
for(DLFileEntry file : listFiles){
try {
Map<String, Fields> fieldsMap = file.getFieldsMap(file.getFileVersion().getFileVersionId());
if(fieldsMap.values().size() <= 0)
listContextFiles.remove(file);
for (Fields fields : fieldsMap.values()) {
if(...){
if(...){
}
else{
if(fields.get("optionaldate") != null) {
DateFormat dateFormat1 = new SimpleDateFormat("yyyy/MM/dd");
String _optionalDate = (String) fields.get("optionaldate").getValue();
Date optionalDate = dateFormat1.parse(_optionalDate);
file.setModifiedDate(optionalDate);
renderRequest.setAttribute("optionalDate", optionalDate);
System.out.println(file.getModifiedDate());
listDate.add(dateFormat.format(file.getModifiedDate()));
}
else{
renderRequest.setAttribute("optionalDate", file.getModifiedDate());
if(!listDate.contains(dateFormat.format(file.getModifiedDate()))){
listDate.add(dateFormat.format(file.getModifiedDate()));
}
}
//other conditions
}
...
在我view.jsp的:
<liferay-ui:search-container iteratorURL="<%=actionURL%>" delta="10"
emptyResultsMessage="no-documents">
<liferay-ui:search-container-results total="<%=list.size()%>"
results="<%=ListUtil.subList(list,
searchContainer.getStart(),
searchContainer.getEnd())%>" />
<liferay-ui:search-container-row modelVar="file"
className="DLFileEntry">
<!--other code-->
<liferay-ui:search-container-column-text name='date'
cssClass="txt-capitalize width-10">
<fmt:formatDate value="${optionalDate}" pattern="MMM yyyy" />
</liferay-ui:search-container-column-text>
<!--other code-->
</liferay-ui:search-container-row>
</liferay-ui:search-container>
有沒有乾淨的方式來做到這一切的?
有人能告訴我我的代碼有什麼問題嗎?
你好,我可以找到一個解決方案。我的問題仍然存在[擱置]。 –
有人能告訴我我的代碼有什麼問題嗎? –