Я прошу этого скриста от имени одного из моих разработчиков. Я сам не заглядывал в детали.Управляемые бобы и TabContainer
Предположим, у вас есть простой управляемый bean-компонент (= контакт). Этот компонент имеет метод для получения контактов firstName.
Я могу открыть XPage и связать компонент с computedText поля # {} contact.firstName
В нашем приложении мы используем TabContainer нескольких документов одного и того же типа (контакт) открытым. Как мне использовать мой боб в контейнере?
лица-config.xml:
<managed-bean>
<managed-bean-name>person</managed-bean-name>
<managed-bean-class>com.package.Person</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
Java Bean Class:
public class Person implements Serializable {
private String strDocumentID;
private Document docData;
private String strFirstName;
private String strLastName;
private static final long serialVersionUID = 2934723410254681213L;
public Person() {
//setting the DocumentUniqueID of the current in a tab opened document
//attention: there could be more than one open tab, all with different documents
//and even different document types; and it is possible to switch back and forth between tabs
//DocumentId = ???;
//Setting the values from the stored document to the object
//setValues();
}
private void setValues() {
try {
Session session=NotesContext.getCurrent().getCurrentSession();
Database currdb=session.getCurrentDatabase();
docData=currdb.getDocumentByUNID(DocumentId);
setStrFirstName(docData.getItemValueString("FirstName"));
setStrLastName(docData.getItemValueString("LastName"));
} catch (NotesException e) {
throw new FacesException("Could not open document for documentId "+ DocumentId, e);
}
}
public Document getDataDocument() {
return docData;
}
public void setDataDocument(Document docData) {
this.docData = docData;
}
public String getDocumentId() {
return DocumentId;
}
public void setDocumentId(String documentId) {
DocumentId = documentId;
}
public String getStrFirstName() {
return strFirstName;
}
public void setStrFirstName(String strFirstName) {
this.strFirstName = strFirstName;
}
public String getStrLastName() {
return strLastName;
}
public void setStrLastName(String strLastName) {
this.strLastName = strLastName;
}
}
таможенного контроль с вычисленным полем:
person.strFirstName
Таким образом, проблема заключается в конструкторе Класс личности. Он должен получить «ссылку» на открытый документ, когда документ открывается на вкладке и каждый раз при переключении на эту вкладку. И это без использования какого-либо источника данных, потому что это то, что должно делать сам управляемый компонент.
Итак, надежда, которая помогла получить немного больше понимания проблемы. Если нет, пожалуйста, спросите еще раз.
Я думаю, что этот вопрос нужно больше информации. что вы пробовали? вы поместили поле computedText в контейнер табуляции? Что ты пытаешься сделать? любые ошибки? –
Для каждого контакта мы открываем новую tabPane в tabContainer. Каждая tabPane содержит все элементы из контакта (firstname - только пример). Теперь у нас есть источник данных с идентификатором базового документа. Это работает до сих пор. теперь мы хотим заменить источник данных управляемым компонентом. Мой разработчик сказал мне, что он не может передать идентификатор в конструкторе. –
Не могли бы вы отправить какой-то код из управляемого bean-компонента и вашего face-config и где этот управляемый bean-компонент извлекает свои данные? Звуки звучат так, как будто код работает неправильно. Вместо того, чтобы иметь управляемый компонент, который представляет контакт и заполняется данными с вашей xpage. Он должен быть управляемым компонентом, который извлекает данные контакта сам по себе и возвращает список контактных объектов, извлеченных из представления или что-то в этом роде, но это просто дикие гусы. – jjtbsomhorst