Struts Tiles, как правильно справиться с этой ситуацией? - PullRequest
0 голосов
/ 16 сентября 2011

Я только начал изучать Struts (+ Spring) MVC, и я мог бы использовать некоторые объяснения этой ситуации:

Я использую плитки Struts для своего уровня представления, и я хочу отобразить некоторые данные из базы данных внесколько плиток, которые с плиткой основного контента образуют полную страницу.Я не могу найти правильный способ сделать это, который соответствует шаблону MVV / лучшие практики.

Содержимое этих плиток извлекается из базы данных формы, не основанной на вводе данных пользователем, например, плитка, в которой перечислено несколько последних товаров, добавленных в магазин и т. Д.A 'со статическим методом, который запрашивает базу данных и возвращает список нескольких последних продуктов, а в jsp этой плитки я просто поместил скриптлет как:
<% для каждого элемента в A.GetLastestProducts ();dispaly data%>

но мне сказали, что это плохой способ сделать это

Может кто-нибудь объяснить мне, как правильно обрабатывать эту ситуацию, например, "создать класс, который будет запрашивать вашу базу данных, чем создатьбла, который будет бла-бла, тогда в вашей плитке JSP бла-блах "

спасибо

1 Ответ

1 голос
/ 16 сентября 2011

Если вы используете распорки, я бы предложил использовать архитектуру распорок для вашей JSP.Я бы, вероятно, структурировал бы это так:

public class MyStutsAction extends ActionSupport implements preparable{

    private List<MyNewProducts> newProducts;

    @Override
    public void prepare() throws Exception {
        if(products == null){
            products = MyNewProductsDAO.getProductList();
        }
    }

    //Struts action stuff

    public List<MyNewProducts> getNewProducts(){
        return newProducts;
    }

    public setNewProducts(List<MyNewProducts> newProdcuts){
        this.newProducts = newProducts;
    }

}

Тогда со своей страницы JSP вы получите к нему доступ следующим образом:

<s:iterator value="newProducts" status="stat">
    <div> <s:property value="%{attributeName}" /> </div>
</s:iterator>

Это исключит некоторые ненужные вызовы базы данных, поддерживая ваш списокпродуктов в стеке значений и условном выражении в методе prepare заполнит список, если по какой-либо причине он будет нулевым.

...