현재 TableTree를 구현하려고합니다. 하지만 어쨌든 노드를 확장하지는 않습니다. 나는 이것이 어떻게 일어날 수 있는지에 관해 아무것도 발견하지 못했습니다. 내 데모 - 설정에는 내 루트 노드의 하위 노드로 렌더링되어야하는 데이터가 포함되어 있습니다. 개찰구 코드를 통해 스테핑개찰구 6.5.0 : DefaultTableTree가 확장되지 않습니다
노드가 결코 EXPANDED
요소 OrderItem
의 설정이 OrderWrapper
-Entities을 표시하는 루트로의 상태를 변경하지 밝혔다.
다음은 관련 코드입니다. 더 많은 정보가 필요하다면 최선을 다해 제공 할 것입니다.
TableTree 포함하는 패널 :
@Service
public class OrderService {
public class CustomerDetailProvider implements
ISortableTreeProvider<CustomerDetailDto, String> {
IModel<Customer> customerModel;
ISortState<String> sortState;
public CustomerDetailProvider(Customer customer) {
this(new DefaultLoadableDetachableModel<>(customerDao, customer));
}
public CustomerDetailProvider(IModel<Customer> customerModel) {
this.customerModel = customerModel;
sortState = new SingleSortState<String>();
sortState.setPropertySortOrder("dateofOrderBegin",
SortOrder.ASCENDING);
LOG.info("CustomerDetailProvider created");
}
@Override
public void detach() {
customerModel.detach();
}
@SuppressWarnings("unchecked")
@Override
public Iterator<? extends CustomerDetailDto> getChildren(
CustomerDetailDto node) {
List<OrderItem> childrenList = orderItemDao.findByParentId(
node.getOrderWrapperId()).list();
return transformItemToDto(childrenList).iterator();
}
@Override
public Iterator<? extends CustomerDetailDto> getRoots() {
List<OrderWrapper> rootList = orderWrapperDao
.getForCustomer(customerModel.getObject());
return transformWrapperToDto(rootList).iterator();
}
@Override
public ISortState<String> getSortState() {
return sortState;
}
@Override
public boolean hasChildren(CustomerDetailDto node) {
return node.getOrderWrapperId() != null;
}
@Override
public IModel<CustomerDetailDto> model(final CustomerDetailDto object) {
return new AbstractReadOnlyModel<CustomerDetailDto>() {
@Override
public CustomerDetailDto getObject() {
return object;
}
};
}
private List<CustomerDetailDto> transformItemToDto(
List<OrderItem> childrenList) {
List<CustomerDetailDto> resultList = new LinkedList<CustomerDetailDto>();
DateConverter dateConverter = new DateConverter();
BigDecimalCurrencyConverter currencyConverter = new BigDecimalCurrencyConverter();
Locale locale = Locale.getDefault();
for (OrderItem orderItem : childrenList) {
CustomerDetailDto nextElement = new CustomerDetailDto();
nextElement.setComment("");
nextElement.setDateOfOrderBegin(dateConverter.convertToString(
orderItem.getDateOfCreation(), locale));
nextElement.setTotalValue(currencyConverter.convertToString(
orderItem.getTotalValue(), locale));
nextElement.setBeerName(orderItem.getBeer().getName());
nextElement.setAmount(orderItem.getAmount() + "");
nextElement.setOrderItemId(orderItem.getId());
resultList.add(nextElement);
}
return resultList;
}
private List<CustomerDetailDto> transformWrapperToDto(
List<OrderWrapper> rootList) {
List<CustomerDetailDto> resultList = new LinkedList<CustomerDetailDto>();
DateConverter dateConverter = new DateConverter();
BigDecimalCurrencyConverter currencyConverter = new BigDecimalCurrencyConverter();
Locale locale = Locale.getDefault();
for (OrderWrapper orderWrapper : rootList) {
CustomerDetailDto nextElement = new CustomerDetailDto();
nextElement.setComment(orderWrapper.getComment());
nextElement.setDateOfOrderBegin(dateConverter.convertToString(
orderWrapper.getDateOfOrderBegin(), locale));
nextElement.setOrderWrapperId(orderWrapper.getId());
nextElement.setTotalValue(currencyConverter.convertToString(
orderWrapper.getTotalValue(), locale));
nextElement.setUserName(orderWrapper.getUser().getUserName());
resultList.add(nextElement);
}
return resultList;
}
}
private static final Logger LOG = Logger.getLogger(OrderService.class);
@Autowired
private CustomerDao customerDao;
@Autowired
private OrderItemDao orderItemDao;
@Autowired
private OrderWrapperDao orderWrapperDao;
public OrderService() {
}
public CustomerDetailProvider getProviderForCustomer(Customer c) {
return new CustomerDetailProvider(c);
}
}
DataTransferObject :
public class CustomerDetailPanel extends Panel implements CustomerSelecting {
@SpringBean
OrderService orderService;
@SpringBean
OrderWrapperDao orderWrapperDao;
public CustomerDetailPanel(String id) {
super(id);
init();
}
public CustomerDetailPanel(String id, IModel<?> model) {
super(id, model);
init();
}
private List<? extends IColumn<CustomerDetailDto, String>> createColumns() {
List<IColumn<CustomerDetailDto, String>> result = new LinkedList<>();
result.add(new TreeColumn<CustomerDetailDto, String>(Model.of("Datum")));
result.add(new PropertyColumn<CustomerDetailDto, String>(Model
.of("Amount"), "amount"));
//more columns...
return result;
}
private void init() {
WebMarkupContainer orders;
Customer c = (Customer) this.getDefaultModelObject();
if (c != null && c.getId() != null) {
CustomerDetailProvider providerForCustomer = orderService
.getProviderForCustomer(c);
List<? extends IColumn<CustomerDetailDto, String>> columns = createColumns();
DefaultTableTree<CustomerDetailDto, String> tree = new DefaultTableTree<CustomerDetailDto, String>(
"orders", columns, providerForCustomer, 20);
orders = tree;
} else {
orders = new WebMarkupContainer("orders");
}
add(orders);
}
@Override
public void performStepCustomerSelected(AjaxRequestTarget target,
Customer customer) {
// Nothing to do yet
}
}
ISortableTreeProvider 생성 서비스 사전에 어떤 도움
public class CustomerDetailDto {
private String amount;
private String beerName;
private String comment;
private String dateOfOrderBegin;
private Long orderItemId;
private Long orderWrapperId;
private String totalValue;
private String userName;
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof CustomerDetailDto)) {
return false;
}
CustomerDetailDto other = (CustomerDetailDto) obj;
return other.getOrderItemId() == this.getOrderItemId()
&& other.getOrderWrapperId() == this.getOrderWrapperId();
}
@Override
public int hashCode() {
if (this.getOrderItemId() != null) {
return this.getOrderItemId().hashCode();
}
if (this.getOrderWrapperId() != null) {
return this.getOrderWrapperId().hashCode();
}
return super.hashCode();
}
@Override
public String toString() {
return dateOfOrderBegin;
}
//Getters and setters...
}
감사 및 실례 내 울퉁불퉁 한 영어.
샘