Вы имеете в виду, что is_single()
вернет true, если это сообщение? (не страница), я прав,
Мне это нравится, я думаю, что вы не правы, потому что у меня есть плагин, показывающий какой-то текст только на посте, я использую is_single()
, но он также отображается на страницах .
Пожалуйста, совет.
Благодаря
После долгих проб и ошибок мне удалось найти способ сделать это. Возможно, это не лучший способ, но он работает. Надеюсь, этот пост может сэкономить кому-то еще много времени и усилий.
Эти инструкции предполагают, что вы выполнили как базовое руководство по StockWatcher , так и модификации StockWatcher Google App Engine .
При использовании GWT следует иметь в виду несколько вещей:
Из-за обоих пунктов выше, клиент никогда не сможет реализовать класс Stock, который мы создан на com.google.gwt.sample.stockwatcher.server. Вместо этого мы
public Long addStock(String symbol) throws NotLoggedInException {
Stock stock = new Stock(getUser(), symbol);
checkLoggedIn();
PersistenceManager pm = getPersistenceManager();
try {
pm.makePersistent(stock);
} finally {
pm.close();
}
return stock.getId();
}
Все остальные методы остаются такими же, кроме getStocks:
public StockClient[] getStocks() throws NotLoggedInException {
checkLoggedIn();
PersistenceManager pm = getPersistenceManager();
List<StockClient> stockclients = new ArrayList<StockClient>();
try {
Query q = pm.newQuery(Stock.class, "user == u");
q.declareParameters("com.google.appengine.api.users.User u");
q.setOrdering("createDate");
List<Stock> stocks = (List<Stock>) q.execute(getUser());
for (Stock stock : stocks)
{
stockclients.add(new StockClient(stock.getId(), stock.getSymbol(), stock.getCreateDate()));
}
} finally {
pm.close();
}
return (StockClient[]) stockclients.toArray(new StockClient[0]);
}
Приведенный выше код отлично работает у меня при развертывании в Google App Engine, но вызывает ошибку в режиме хостинга Google Web Toolkit:
SEVERE: [1244408678890000] javax.servlet.ServletContext log: Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.google.gwt.sample.stockwatcher.client.StockClient[] com.google.gwt.sample.stockwatcher.client.StockService.getStocks() throws com.google.gwt.sample.stockwatcher.client.NotLoggedInException' threw an unexpected exception: java.lang.NullPointerException: Name is null
Позвольте мне знать, столкнулись ли вы с той же проблемой или нет. Тот факт, что он работает в Google App Engine, по всей видимости, указывает на ошибку в размещенном режиме.
GWT требуется файл .java в дополнение к файлу .class. Кроме того, Stock должен находиться в «клиентском» месте модуля GWT.
Компилятор GWT не знает о Stock, потому что он не в том месте, куда он смотрит. Вы можете либо переместить его в папку клиента, либо, если имеет смысл, оставить его там, где он is и создайте ModuleName.gwt.xml, который ссылается на любые другие классы, которые вы хотите, и получите ваш файл Main.gwt.xml для наследования от этого.
например: DomainGwt.gwt.xml
<module>
<inherits name='com.google.gwt.user.User'/>
<source path="javapackagesabovethispackagegohere"/>
</module>
и:
<module rename-to="gwt_ui">
<inherits name="com.google.gwt.user.User"/>
<inherits name="au.com.groundhog.groundpics.DomainGwt"/>
<entry-point class="au.com.groundhog.groundpics.gwt.client.GPicsUIEntryPoint"/>
</module>
Да, конечно, нам нужно использовать сериализацию для передачи серверных объектов клиенту. Эти модильные ?? настройки файла не будут работать для использования класса Stock на стороне клиента.
В вашем случае у вас есть только один класс Stock, и вы можете создать StockClient на стороне клиента. Это легко. Но какое будет решение, если у кого-то будет больше занятий. Что-то вроде свойств этого класса также является другим типом классов.
Пример: stock.getEOD (date) .getHigh ();
getEOD
вернет другой класс с заданной датой и в этом классе есть метод getHigh
.
Что делать в таких больших случаях? Я не думаю, что создание всех классов, реализующих сериализацию на стороне клиента, подходит для этого. Затем нам нужно написать код как на сервере, так и на клиенте. все классы два раза.
Здесь есть лучший ответ: Проблема с примером использования GWT Simple RPC: Код включен
В принципе, вы можете добавить параметры в свой файл APPNAME.gwt.xml, чтобы компилятор предоставил компилятору путь к серверу -затрат.