Тема 'XXX' не может быть найдена в приложении или глобальных каталогах темы

Переменные-члены никогда не должны объявляться закрытыми (в java)

Если вы объявляете что-то частное, вы не позволяете любому будущему разработчику унаследовать ваш класс и расширить функциональность. По сути, когда вы пишете «private», вы подразумеваете, что теперь вы знаете больше о том, как ваш класс может использоваться, чем любой будущий разработчик. Всякий раз, когда вы пишете «частный», вы должны вместо этого писать «защищенный».

Классы никогда не должны объявляться как финальные (в java)

Аналогично, если вы объявляете класс как финальный (что препятствует его расширению - запрещает использовать его как базовый класс для наследования), вы подразумеваете, что знаете больше, чем любой будущий программист, о том, как правильно и правильно использовать ваш класс. Это никогда не хорошая идея. Ты не все знаешь. Кто-то может придумать совершенно подходящий способ расширить свой класс, о котором вы даже не подумали.

Java Beans - ужасная идея.

Соглашение о bean-компоненте java - объявляя все члены частными, а затем записывая методы get () и set () для каждого члена - заставляет программистов писать шаблонный, подверженный ошибкам, утомительный и длинный код, где нет кода необходимо. Просто сделайте публичные переменные-члены публичными! Доверьтесь своей способности изменить его позже, если вам нужно изменить реализацию (подсказка: 99% времени вы никогда не будете).

7
задан Fredrik Mörk 29 June 2009 в 10:13
поделиться

2 ответа

В методе Page_PreInit, где вы назначаете темы, есть несколько способов справиться с этим. Что я делаю, так это проверяю, существует ли каталог. Если да, то я хочу именно эту тему. Если нет, то используйте тему по умолчанию, где я знаю, что каталог существует.

void Page_PreInit(object sender, EventArgs e)
{
    if (ViewState["PageTheme"] == null)
    {
        if (!Directory.Exists("~/App_Themes/THEMENAME_TO_LOOK_FOR"))
        {
            Theme = "DEFAULT_THEME"
        } 
        else 
        {
            Theme = "THEMENAME_TO_LOOK_FOR";
        }
        ViewState["PageTheme"] = Theme;
    } 
    else 
    {
        Theme = ViewState["PageTheme"].ToString();
    }
}

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

2
ответ дан 7 December 2019 в 12:24
поделиться

You have to make sure that you change users' theme preference if they use your theme to be renamed/deleted. If renamed, then rename accordingly, if deleted, change to default theme.As you store theme preference inside cookies you'll have to check them and make the change on user access.

0
ответ дан 7 December 2019 в 12:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: