Большое спасибо за ваши идеи и amp; специально BalusC (много для вас). Моим окончательным решением была небольшая мутация, и я хотел бы поделиться с вами всеми.
Поскольку я использую richfaces 3.3.3, это похоже на использование jsf1.2, следовательно, нет
. В обычной ситуации вы должны нажать на ссылку с href, указывающий на внутреннюю ссылку . Я использую много предварительно упакованных компонентов, где не каждый кликабельный элемент является ссылкой
. Это может быть любой элемент html. Было очень полезно использовать плагин jAQuery для закладок Ben Alman ( http://benalman.com/projects/jquery-bbq-plugin/ )
Обратите внимание, что onclick I может программно установить значение фрагмента как ключа / значения, а в следующем коде я заменю старое значение новым значением jQuery.bbq.pushState(state,2)
(или я мог бы просто добавить за прежнее значение jQuery.bbq.pushState(state)
).
В моем случае ws->md->nd
- это иерархические данные, в которых достаточно, чтобы один из них и его родители вычислялись на сервере, поэтому я заменяю родительское значение дочерним значением.
В богатых интерфейсах это классный способ вызова методов setter из браузера с параметром. Обратите внимание, что sendURLFragment
рассматривается как метод JS с 5 параметрами и значения передаются на сервер (что очень круто).
Сделайте это, когда вы скопируете новый URL-адрес и загрузите страницу.
window.onload = function(){
if(window.location.hash != ""){
//Parse the fragment (hash) from a URL, deserializing it into an object
var deparamObj = jQuery.deparam.fragment();
var ws= '', md= '', nd= '', ld= '', ln = '';
jQuery.each(deparamObj, function(key, value) {
switch(key){
case 'ws':
ws = value;
break;
case 'md':
md = value;
break;
case 'nd':
nd = value;
break;
case 'ld':
ld = value;
break;
case 'ln':
ln = value;
break;
default:
break;
}
});
sendURLFragment(ws,md,nd,ld,ln);
} };
Найденный этим в http://borkware.com/quickies/one?topic=NSString (полезная ссылка):
NSString *string = @"oop:ack:bork:greeble:ponies";
NSArray *chunks = [string componentsSeparatedByString: @":"];
Hope это помогает!
Adam
Если Вы просто хотите разделить строку, используйте -[NSString componentsSeparatedByString:]
. Для более сложной токенизации используйте класс NSScanner.
Если Ваши потребности токенизации более сложны, проверяют мою Строку Какао с открытым исходным кодом, маркирующую/анализирующую инструментарий: ParseKit:
Для простого разделения строк с помощью символа разделителя (как ':'), ParseKit определенно был бы излишеством. Но снова, для сложных потребностей токенизации, ParseKit чрезвычайно мощен/гибок.
Также посмотрите документация Токенизации ParseKit .
Все упомянули componentsSeparatedByString:
, но можно также использовать CFStringTokenizer
(помните, что NSString
и CFString
являются взаимозаменяемыми), который будет маркировать естественные языки также (как китаец/Японский язык, который не разделяет слова на пробелах).