我使用AppFuse创建了一个基本的应用程序shell,并按照AppFuse教程使用Jax-RS创建了一个简单的RESTful服务.这很好用.调用http://localhost:8080/services/api/persons将Person对象的集合作为具有正确数据的Json格式字符串返回.
我现在想要从Appfuse公开的RESTful服务中访问ServletRequest和ServletResponse对象(使用另一个需要这些对象的库).
我认为应该通过添加@Context注释来实现,例如关注此StackOverflow帖子和此论坛帖子.
但是,如果我添加@Context标记(见下文),它编译正常但在服务器重新启动时抛出异常(附在底部).
这是以下声明@WebService:
@WebService
@Path("/persons")
public interface PersonManager extends GenericManager<Person, Long> {
@Path("/")
@GET
@Produces(MediaType.APPLICATION_JSON)
List<Person> read();
...
}
Run Code Online (Sandbox Code Playgroud)
这里是我认为我会称之为@Context注释的实现类:
@Service("personManager")
public class PersonManagerImpl extends GenericManagerImpl<Person, Long> implements PersonManager {
PersonDao personDao;
@Context ServletRequest request; // Exception thrown on launch if this is present
@Context ServletContext context; // Exception thrown on launch of this is present
...
}
Run Code Online (Sandbox Code Playgroud)
希望我错过了一些简单的东西,要么包括要使其工作,要么意识到获得ServletRequest是不可能的,因为......任何线索都会受到欢迎.
我在IntelliJ的Tomcat上运行它. …
我的目标是创建一个editable指令,允许用户编辑属性所附加的任何元素的HTML(参见Plunker:http://plnkr.co/edit/nIrr9Lu0PZN2PdnhQOC6 )
除了我无法获得翻译内容的原始原始HTML以初始化文本区域之外,这几乎可以正常工作.我可以得到它从文clone.text(),但缺少像HTML标签<H1>,<div>等等,以便点击没有编辑不幂等应用.
该方法clone.html()抛出错误,Cannot read property 'childNodes' of undefined
app.directive("editable", function($rootScope) {
return {
restrict: "A",
templateUrl: "mytemplate.html",
transclude: true,
scope: {
content: "=editContent"
},
controller: function($scope, $element, $compile, $transclude, $sce) {
// Initialize the text area with the original transcluded HTML...
$transclude(function(clone, scope) {
// This almost works but strips out tags like <h1>, <div>, etc.
// $scope.editContent = clone.text().trim();
// this works much …Run Code Online (Sandbox Code Playgroud) 更新了Express.js从版本2到3,以及随后的调用app.dynamicHelpers({..})打破,因为它不再出现在V3中:
app.dynamicHelpers({
request: function(req){
return req
},
...etc.
});
Run Code Online (Sandbox Code Playgroud)
有一个迁移指南说:
app.dynamicHelpers() (使用中间件+ res.locals)但我很难过如何做到这一点.有没有更具体的例子来说明如何迁移?
相关SO帖子: nodejs express 3.0
有一个node.js应用程序正在接收包含文字NaN的JSON数据字符串,例如
"[1, 2, 3, NaN, 5, 6]"
Run Code Online (Sandbox Code Playgroud)
这JSON.parse(...)在Node.js 崩溃了.如果我可以进入一个物体,我想解析它.
我知道NaN这不是JSON规范的一部分.大多数SO链接(在json中发送NaN)建议修复输出.
在这里,尽管数据是在我无法控制的服务器中生成的,但它是由商业Java库在哪里我可以看到源代码.它由Google的Gson库生成:
private Gson gson = (new GsonBuilder().serializeSpecialFloatingPointValues().create());
...
gson.toJson(data[i], Vector.class, jsonOut)
Run Code Online (Sandbox Code Playgroud)
所以这似乎是一个合法的来源.根据Gson API Javadoc,它说我应该能够解析它:
JSON规范的2.4节不允许使用特殊的双精度值(NaN,Infinity,-Infinity).但是,Javascript规范(参见4.3.20,4.3.22,4.3.23节)允许这些值作为有效的Javascript值.而且,大多数JavaScript引擎都会在JSON中接受这些特殊值而不会出现问题.因此,在实际层面上,即使JSON规范不允许将这些值作为有效的JSON接受也是有意义的.
尽管如此,Node.js和Chrome都失败了: JSON.parse('[1,2,3,NaN,"5"]')
在JSON.parse()中是否有要设置的标志?或者NaN作为文字接受的替代解析器?
我已经谷歌搜索了一段时间,但似乎无法找到关于这个问题的文档.
GitHub和NPM上存在高质量的开源代码库,拥有广泛的用户群.
我已经分叉了这个项目并做了大量的扩展.我认为已准备好合并回来.但(适当地)它的项目所有者谁打电话不是我.现在已经好几周没有回复了.
一些用户已经在回购问题讨论中询问了这个被合并回来的问题,并且更多的用户直接与我联系以作为单独的项目发布到NPM.
严肃的开发人员可以通过GitHub获得新版本,但它只有原始源,而不是链接/缩小/定制版本,因为README表示make dist在它合并回来并且版本号递增之前不会运行.
我认为它应该像创建这个fork的fork一样简单,并将其作为新的NPM模块发布.但GitHub不允许我这样做("你已经在看这个项目")
有没有办法可以将其作为新的NPM模块发布,但仍保留选项
我是否在新的电子邮件地址下创建了新的GitHub帐户?
有没有办法模块化SQL代码,以便更具可读性和可测试性?
我的SQL代码经常变成一系列复杂的嵌套连接,内部连接等,难以编写且难以调试.相比之下,在诸如Javascript或Java之类的过程语言中,人们会将离散元素作为单独的函数来捏合,这些函数将按名称调用.
是的,可以将每个查询作为完全独立的查询,存储在数据库中或作为存储过程编写,但通常我不想更改/混乱数据库,只是查询它很好,特别是如果DBA不希望授予所有用户写入权限.
例如,从概念上讲,复杂查询可能很容易用伪代码描述,如下所示:
(getCustomerProfile)
left join
(getSummarizedCustomerTransactionHistory)
using (customerId)
left join
(getGeographicalSummaries)
using (region, vendor)
...
Run Code Online (Sandbox Code Playgroud)
我意识到从理论上看有很多关于这个主题的文章(下面的几个链接),但我只是想找到一种方法来使代码更容易正确编写,并且一旦编写就更容易阅读.也许只是语法糖来从视觉中抽象出复杂性,如果不是从执行中,那么在我试图不看的文字SQL中编译.类推...
如果特定的SQL风格很重要,我的大部分工作都在PostgresQL中.
是否有可能以编程方式获取Angular.js指令中的原始被转换内容?
我正在尝试创建一个editable可以添加到任何div 的指令,允许用户使用自定义角度指令编辑HTML内容.(设计目标是避免在应用程序中添加无限配置GUI功能,因为高级用户只需编辑HTML ...),例如:
<div editable>
<h1>Lorem Ipsem</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit...</p>
<clock>A custom directive</clock>
</div>
Run Code Online (Sandbox Code Playgroud)
以Plunker为例(http://plnkr.co/edit/nIrr9Lu0PZN2PdnhQOC6?p=preview):
<h1>A title</h1><p>some content</p><clock></clock>)到目前为止我喜欢这个:
我还想不通的是:
在编译函数中,$transclude似乎包含模板mydirective,并且包含控制器函数,$transclude包含事物更改后的后编译内容,指令呈现等.
对于尚未保存到服务器的模型,我可以使用Collection.get(id)通过cid在Backbone.js集合中查找模型吗?
从文档中看,似乎.get应该通过id或cid找到一个模型.但是,collection.get(cid)没有找到模型,而这确实如此collection.find(function(model) {return model.cid===cid; }).据推测,我忽略了一些基本的东西.
var Element = Backbone.Model.extend({});
var Elements = Backbone.Collection.extend({ model: Element });
var elements = new Elements(), el, cids = [];
for (var i=0; i<4; i++) {
el = new Element({name: "element"+i})
elements.add(el);
cids.push(el.cid);
}
console.log(cids);
el1 = elements.get(cids[0]);
console.log(el1); // undefined
el1a = elements.find(function(model) { return model.cid === cids[0]; });
console.log(el1a); // success
Run Code Online (Sandbox Code Playgroud)
是否有适用于Excel,Chrome和Firefox(并且理想情况下更广泛)并且在美国和欧盟的各种地区有效的CSV日期时间格式?
Excel可以使用ISO日期读取CSV,但无法识别第一列中的ISO日期时间值:
这是一个示例CSV:
"datetime"
"1985-07-17T09:12Z"
"1985-07-17 09:12"
"1985-07-17"
"12/10/2010 9:12",
"10-Dec-2010 09:11",
"Dec 10, 2010 09:11"
Run Code Online (Sandbox Code Playgroud)
"1985-07-17T09:12Z" 解析Chrome和Firefox,但不解析Excel"1985-07-17 09:12" 解析Chrome和Excel但不解析Firefox"1985-07-17" 在Chrome,Excel和Firefox中进行分析,但却浪费时间"12/10/2010 09:12" 在Chrome,Excel和Firefox中解析,但假设使用美国语言环境"10-Dec-2010 09:11" 在Firefox中不解析"Dec 10, 2010 09:11" 解析Excel,Chrome和Firefox ......但仅限于美国?Chrome可以读取大量特定于语言环境的日期时间格式,但Firefox更为挑剔.
更新:添加了更完整的示例
问题:"Dec 10, 2010 09:11"仅仅因为我在美国,或者这项工作更普遍吗?
我有一个应用程序是服务器上的Node + Express + Passport和客户端上的jQuery + Backbone.js.客户端在URL中使用哈希标记,但是对于某些功能,用户登录是很重要的.
我希望可以通过URL访问该应用,例如http://mydomain.com/app#cone/waffle/flavor/mint/toppings/sprinkles:
/login则会转到然后转到请求的URL继这篇SO帖子,关于Node.js Passport的Google策略的自定义returnUrl之后 ,我就这样了
它似乎在登录后从重定向上的原始URL中删除哈希参数.
有什么方法可以在将哈希参数重定向到原始目标时保留哈希参数吗?
从这篇文章中,从请求URL获取哈希参数我得到了哈希标签在服务器上不可用的想法,这是使用哈希标签的全部要点.
所以我怀疑这是不可能的.也许以某种方式在本地缓存params并在重定向上检索它们,对[original URL minus hastags] + #use-cached-params吗?
node.js ×4
javascript ×3
angularjs ×2
express ×2
abstraction ×1
appfuse ×1
backbone.js ×1
csv ×1
excel ×1
fork ×1
git ×1
github ×1
gson ×1
java ×1
jax-rs ×1
json ×1
merge ×1
passport.js ×1
rest ×1
servlets ×1
sql ×1
transclusion ×1