所以我对JSP很陌生.我试过这几种方法.在PHP或者自动化框架中有意义的方法......实际上我可能想得太多了......
我有一个休眠的一对多关联.那就是类x有很多类y.在类x的view.jsp中.我想抓住所有类y,其中y的外键与x的主键匹配并显示它们.似乎hibernate正确地将这些东西放入一个集合中.现在,问题是如何迭代这个集合然后输出它的内容......
我有点难过.我试着写一个scriptlet,
<%
java.util.Iterator iter = aBean.getYs().iter(); // aBeans is the bean name
// getYs would return the set and iter would return an iterator for the set
while(iter.hasNext) {
model.X a = new iter.next()
%>
<h1><%=a.getTitle()%></h1>
<%
}
%>
Run Code Online (Sandbox Code Playgroud)
这似乎应该有用吗?Hmmmmmm
我一直在努力解决这个问题.我有一个多语言的Web应用程序,在某些时候输出XML.这个XML可以包含任何语言,因此我的清理方法是禁止某些破坏XML的字符被插入.我尽可能多地在CDATA中包装,但我在属性中有很多内容.我不想禁用特殊字符,因为括号,句号,短划线,刻度和撇号等完全有效的字符始终使用并且它们起作用.
去除所有会破坏XML属性的字符的最佳方法是什么,但保留语言完整?
更新:
我发现:http://en.wikipedia.org/wiki/CDATA#CDATA-type_attribute_value,它向我表明我可以使用DTD将属性描述为CDATA部分; 然而,这似乎并非如此.
<?xml version="1.0" ?>
<!DOCTYPE foo [
<!ELEMENT foo EMPTY>
<!ATTLIST foo a CDATA #REQUIRED>
]>
<foo a="•"><![CDATA[ • ]]> </foo>
Run Code Online (Sandbox Code Playgroud)
任何验证者都会抱怨公牛不是该属性中的实体.如果删除该属性,它将有效.另外我听说模式是要走的路,所以如果像上面这样的东西是可能的,而是使用XML Schema,那就太棒了.
谢谢!
所以我看到很多JavaScript代码在制作构造函数时使用"new".阅读部分JavaScript的好零件之后,似乎使用"新"不是猫的睡衣.那是4年前的事了......是不是仍然不推荐?现行标准是什么?
如果组件已卸载,那么该对象是否会再次被重用?
用例:假设组件有时是在if语句中从更高级别显示的.
如果该组件由于状态更改而消失,那么componentWillUnmount调用当然会触发.当它稍后由于状态改变而重新出现时,是否会重复使用相同的组件或从头开始创建它?我猜不会有新组件的保证,这就是WillMount和WillUnmount都存在的原因.
所以我试图使用os.walk()来生成目录结构的XML表示.我似乎得到了大量的重复.它正确地将目录放在彼此之间,并将文件放在xml文件的第一部分的正确位置; 但是,在它正确完成后,它会继续错误地遍历.我不太清楚为什么......
这是我的代码:
def dirToXML(self,directory):
curdir = os.getcwd()
os.chdir(directory)
xmlOutput=""
tree = os.walk(directory)
for root, dirs, files in tree:
pathName = string.split(directory, os.sep)
xmlOutput+="<dir><name><![CDATA["+pathName.pop()+"]]></name>"
if len(files)>0:
xmlOutput+=self.fileToXML(files)
for subdir in dirs:
xmlOutput+=self.dirToXML(os.path.join(root,subdir))
xmlOutput+="</dir>"
os.chdir(curdir)
return xmlOutput
Run Code Online (Sandbox Code Playgroud)
fileToXML只是解析列表,所以不必担心.
目录结构很简单:
images/
images/testing.xml
images/structure.xml
images/Hellos
images/Goodbyes
images/Goodbyes/foo
images/Goodbyes/bar
images/Goodbyes/square
Run Code Online (Sandbox Code Playgroud)
并生成的xml文件变为:
<structure>
<dir>
<name>images</name>
<files>
<file>
<name>structure.xml</name>
</file>
<file>
<name>testing.xml</name>
</file>
</files>
<dir>
<name>Hellos</name>
</dir>
<dir>
<name>Goodbyes</name>
<dir>
<name>foo</name>
</dir>
<dir>
<name>bar</name>
</dir>
<dir>
<name>square</name>
</dir>
</dir>
<dir>
<name>foo</name>
</dir>
<dir>
<name>bar</name>
</dir>
<dir> …
Run Code Online (Sandbox Code Playgroud) 我在这里发表评论:http://bakery.cakephp.org/articles/PHPdiddy/2006/10/06/custom-urls-from-the-site-root
那说:
只需改变最后一行.
Router :: connect('/ ',array('controller'=>'members','action'=>'show'));
to
Router :: connect('(?!admin | items | images)(.*)',array('controller'=>'members','action'=>'show'));
有些人能够让它工作......但是我看起来并不合适,所以我尝试了以下方法,但仍然没有运气:
Router::connect('(?!/admin|/items|/images)(/.*)',
array('controller' => 'members','action' => 'show'));
Run Code Online (Sandbox Code Playgroud)
无论如何,目标是拥有一个像http:// domainname/username这样的URL ,映射到用户唯一的id.它适用于/*,但我宁愿不使用该方法.想法?
更新到解决方案: 我使用下面的选定答案并添加以下内容.它可能对其他人有帮助.
$misc = array(*your misc webroot, admin route items here...*);
$notList = array_merge(Configure::listObjects('plugin'),Configure::listObjects('controller'));
$notListLowerCase = array();
foreach ($notList as $key=>$item):
$notListLowerCase[] = strtolower(preg_replace("/(.)([A-Z])/","\\1_\\2",$item));
endforeach;
$notList = array_merge($notList,$misc,$notListLowerCase);
$notList = implode('|', $notList);
Router::connect('/:username',
array(
'controller'=>'users',
'action'=>'view'
),
array(
'username' => '\b(?:(?!'.$notList.')\w)+\b'
)
);
Run Code Online (Sandbox Code Playgroud) 滑块当前呈现正常,它只是没有做我告诉它.
我不能用$('#slider').val(50).slider('refresh')
,当我这样做时告诉我:
在初始化之前,Uncaught无法在滑块上调用方法; 试图调用方法'刷新'
这似乎是有意义的,因为我从未将其初始化为滑块.这是我的代码:早些时候我创建了一个div "<div id='scrubber'></div>"
并将其写入屏幕 $(cssSelector.html(html);
然后,一旦代码的其他部分准备就绪,我创建滑块:
$('#scrubber').html('<input type="range" name="prog" id="prog" value="0" min="0" max="'+event.jPlayer.status.duration+'" />').trigger("create");
Run Code Online (Sandbox Code Playgroud)
然后呢:
$('#scrubber').val(event.jPlayer.status.currentTime).slider('refresh');
Run Code Online (Sandbox Code Playgroud)
这给了我那个错误.
我尝试过使用$('#scrubber').slider();
但似乎创建了第二个滑块.所以我试着更换第一个滑块,但它只会让事情变得更糟.在任何情况下,如果我然后尝试更改值,我不再得到错误,但它仍然不会改变滑块的位置.
有任何想法吗?
所以我在接受采访时被问到这个问题,但它提出了一个很好的用例.假设您有一堆数据源.你想找到第一个可用的并处理它而忽略其余的.
所以类似于:
var datasources = new Array("somedatabase1/pizza","somedatabase2/beer","somedatabase3/llama");
var dfds = new Array();
$.each(datasources,function(source){
dfds.push($.getJSON(source));
});
$.when(dfds).done(function(){alert("they are all done");});
Run Code Online (Sandbox Code Playgroud)
忽略我真的不认为什么时候接受一个数组(也许它).这当然会让它等到它们全部完成.我正在寻找一些代码,让它等到一个,其中任何一个完成,然后不用担心其他的.
我被告知它只能递归地工作.
我的目标是假装通过babel获得一些requirejs代码。我发现,如果我if (typeof define !== "function") { var define = require("amdefine")(module); }
在nodejs中运行时在每个文件的顶部添加以下内容,则似乎可以解决问题。
这是我写的一些代码,我认为它们会起作用或几乎起作用:
function injectDefine(babel) {
var header = 'if (typeof define !== "function") { var define = require("amdefine")(module); }';
return new babel.Plugin('amdefine', {
visitor: {
Program: {
enter: function(path, file) {
path.unshiftContainer(
'body',
babel.types.expressionStatement(
babel.types.stringLiteral(header)
)
);
},
},
},
});
}
require('babel-core/register')({
stage: 0,
plugins: [{transformer: injectDefine}],
});
require('../components/button');
Run Code Online (Sandbox Code Playgroud)
该components/button
文件只是我尝试测试是否可以加载某些文件。
其他说明:我正在使用babel 5,现在无法升级。我现在也不能.babelrc
很轻松地使用它。
我想知道wordpress'insert函数是否也为数据添加了斜杠.如果不是,那么看起来准备查询方法会更好地防止SQL注入.我尝试在codex/api中查找问题; 然而,它似乎没有记录.谢谢!
javascript ×3
jquery ×2
php ×2
xml ×2
babeljs ×1
cakephp ×1
database ×1
friendly-url ×1
java ×1
javabeans ×1
jsp ×1
new-operator ×1
os.walk ×1
python ×1
reactjs ×1
recursion ×1
regex ×1
routes ×1
sanitization ×1
transpiler ×1
uislider ×1
wordpress ×1