Работа С Richtext

  • Автор темы alexas
  • Дата начала
A

alexas

#1
В доке - RTF с форматированным текстом. Надо показать его в Xpages со всеми красивостями (форматирование, цвет и т.п.). Как сделать?
Сейчас показываю в Multiline - плохо :(
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#4
эммм... а чего брать value? Почему не Data Binding?

1. Вариант - RT-компонент. Настроить Data Binding (Data Source и Bind to)
2. Computed Field. Все тот же Data Binding (Data Source и Bind to) + Option Content type = HTML

И все отображается нормально.

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
Код:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core"
xmlns:xc="http://www.ibm.com/xsp/custom">

<xp:this.data>
<xp:dominoDocument var="document1" formName="docs"></xp:dominoDocument>
</xp:this.data>

<xp:br></xp:br>
<xp:inputRichText id="inputRichText1" value="#{document1.Untitled4}" readonly="true"></xp:inputRichText>
<xp:br></xp:br>
<xp:br></xp:br>
<xp:text escape="false" id="computedField1" value="#{document1.Untitled4}"></xp:text>
<xp:br></xp:br>
</xp:view>
Результат
rt.png
 

Вложения

  • 41.4 КБ Просмотры: 255
A

alexas

#5
NickProstoNick спасибо за участие!
Просто я плохо описал проблему:
Часть функционала существующей БД переносится в ВЕБ. Инфа в RTF полях уже сохранена не как Store contents as HTML and MIME.
Потому и интересует вопрос о конвертации на лету.
Если поменять у нужных полей Storage на HTML, MIME то для новых доков все ОК, а со старыми - неайс.
Надо наверное удалить-пересоздать соответствующие Item's с перезаписью содержания и ComputeWithForm что-ли для старых доков?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#6
Я никаких настроек в для Notes RT-поля не делал. Не ставил никаких конвертаций.
Обычное RT-поле
 
A

alexas

#7
Я никаких настроек в для Notes RT-поля не делал. Не ставил никаких конвертаций.
Обычное RT-поле
Наверное так биндинг работает? У меня на страничке после разных манипуляций юзера появляется результат - UNID дока. С ним и работаю. С value - я лопух (string получается), надо - getMIMEEntity.
Но у меня если Store content RTF не HTML, MIME - dос.getMIMEEntity("RTF") равен null.
Попробую, если mime==null прям на страничке перезаписать RTF-сохранить док и взять mime снова.
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 809
21
#8
Вполне возможно.
Но то что я не заморачиваюсь с преобразованиями - это факт.
Обходной путь - ты можешь создать объект Data Source \ Domino Document и в свойствах указать UNID нужного тебе документа. По идее Data Source будет перестраиваться динамически.
Должно получиться
 
A

alexas

#9
NickProstoNick спасибо за подсказку.
Динамический DataSource - это хорошо (с биндингом работать удобно - все сильно упрощается).
С Xpages я только начал, голова пока пустая и все очень непривычно.

Все, вопрос снят.
 
A

alexas

#10
P.S. По поводу:
Динамический DataSource - это хорошо (с биндингом работать удобно - все сильно упрощается).
Может кто не знает или пропустил - создание (изменение) DataSource "Налету"<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">взято из openntf </div></div><div class="sp-body"><div class="sp-content">
Код:
/*** 
*** Create Document Datasources On-The-Fly 
*** 
*** Some of the possible parameters are listed below (only static) 
***/

var data = new com.ibm.xsp.model.domino.DominoDocumentData(); 
data.setVar("document1"); /* Name of the datasource */
view.addData(data); 

/*** Some possible parameters as shown in designer ***/
data.setComputeWithForm("both"); /* compute with form */
data.setIgnoreRequestParams(true); /* true or false */
data.setParentId("0123456789ABCDEF0123456789ABCDEF"); 
data.setAllowDeletedDocs(true);; /* true or false */
data.setSaveLinksAs("UseWeb"); 
data.setFormName("Test"); 
data.setRequestParamPrefix("prefix"); 
data.setScope("request"); 
data.setAction("editDocument"); 
data.setConcurrencyMode("force"); 
data.setDocumentId("0123456789ABCDEF0123456789ABCDEF");
Very nice