小编Nar*_*esh的帖子

Jackson JSON没有正确地序列化Joda DateTime

我在Order类中有一个Joda DateTime:

public class Order {
    private DateTime creationTime;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我已经初始化了我的mapper,如下所示:

mapper.configure(
        SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
Run Code Online (Sandbox Code Playgroud)

当我序列化这个类时,我希望看到以ISO-8601格式序列化的creationTime如下

{
  "creationTime" : "2011-01-01T09:00:00.000-04:00"
}
Run Code Online (Sandbox Code Playgroud)

这在我的单元测试中工作得非常好.但是,在我的Web应用程序中,完全相同的代码序列化所有DateTime字段:

{
  "creationTime" : {
    "year" : 2011,
    "dayOfMonth" : 17,
    "dayOfWeek" : 7,
    "era" : 1,
    "dayOfYear" : 107,
    "weekOfWeekyear" : 15,
    "weekyear" : 2011,
    "monthOfYear" : 4,
    "yearOfEra" : 2011,
    "yearOfCentury" : 11,
    "centuryOfEra" : 20,
    "millisOfSecond" : 590,
    "millisOfDay" : 40311590,
    "secondOfMinute" : 51,
    "secondOfDay" : 40311,
    "minuteOfHour" : 11,
    "minuteOfDay" : 671,
    "hourOfDay" : 11, …
Run Code Online (Sandbox Code Playgroud)

java json jodatime jackson

6
推荐指数
1
解决办法
2万
查看次数

Bootstrap 3导航栏的结构是什么?

虽然Bootstrap文档非常好,但我无法从文档中的一个示例中了解导航栏结构.我试图了解导航栏的子组件以及如何使用它们.据我所知,导航栏有两个区域:标题和折叠区域.标题似乎是放置品牌名称(在左侧)和切换按钮在右侧的位置.它似乎也将永远显示的区域.折叠似乎是其他一切的区域,并将折叠为较小的宽度.

  1. 这是正确的理解吗?还有其他方面吗?
  2. 容器 - 流体包装的目的是什么?如果这个包装被删除怎么办?
  3. 每个区域都可以有哪些元素?
  4. 如果我不需要任何可折叠部分怎么办?我应该把所有东西放在标题中吗?
  5. 如果我需要三个不可折叠的部分:左,中,右怎么办?

请帮忙.

PS虽然Bootstrap docuentation非常好,但我希望使用某种图表来记录组件,以识别各种子组件及其预期的行为和用途.

编辑 我在Bootstrap Navbar上发现了这个教程,里面有很多例子 - 非常好.我可以从那里推导出模式,但如果有人能够更明确地表达它们,那将会很好.例如,本教程中的第一个示例有一个div,其中包含类navbar-header,后跟一个没有类且包含所有链接的div.这让我觉得可以根据需要在导航栏中添加尽可能多的div,navbar-header和navbar-collapse只是特殊用途的子组件.

twitter-bootstrap-3

6
推荐指数
1
解决办法
1397
查看次数

ui-router在解析父状态之前触发子状态

我试图在Angular ui-router的父状态中执行一些初始化代码.初始化代码orderService.getStoreInfo()返回一个promise.只有当这个承诺得到解决时,我才能触发子状态.但是,我注意到,即使在父母的承诺解决之前,孩子的状态也会被触发.我究竟做错了什么?这是'我的代码:

function configure($stateProvider, $urlRouterProvider) {

    $urlRouterProvider.otherwise('/');

    $stateProvider
        .state('home', {
            abstract: true,
            template: '<ui-view/>',
            resolve: {
                storeInfo: /* @ngInject */ function(orderService) {
                    console.log('home: resolve - orderService.getStoreInfo()');
                    return orderService.getStoreInfo();
                }
            }
        })

        .state('home.orders', {
            url: '^/',
            template: '<my-order-list data-orders="vm.orders"></my-order-list>',
            resolve: {
                orders: /* @ngInject */ function (orderService) {
                    console.log('home.orders: resolve - orderService.getOrders()');
                    return orderService.getOrders();
                }
            },
            controller: ['orders', function (orders) {
                this.orders = orders;
            }],
            controllerAs: 'vm',
        });
}
Run Code Online (Sandbox Code Playgroud)

控制台日志如下:

home: resolve - orderService.getStoreInfo()
home.orders: resolve - orderService.getOrders()
... …
Run Code Online (Sandbox Code Playgroud)

angularjs angular-ui-router

6
推荐指数
1
解决办法
2286
查看次数

如何从react-router获取当前位置?

我试图从其状态驱动我的应用程序的导航.这是我的用例:

Given the user is on the Login page
When the application state changes to isLoggedIn
Then the application should navigate to the Dashboard page
Run Code Online (Sandbox Code Playgroud)

这是我当前的实现有效:

if (browserHistory.getCurrentLocation().pathname === '/login' && store.isLoggedIn) {
    browserHistory.push('/dashboard');
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,通过react-router文档和问题,我知道这browserHistory.getCurrentLocation()不是官方API,不应该使用它.有推荐的方法吗?

PS此代码在React组件外部运行,因此我无法使用 this.props.location.pathname

reactjs react-router

6
推荐指数
1
解决办法
2893
查看次数

在 React select 中使用枚举

我想使用以下枚举在 React 中显示一个下拉列表。这个想法是为了防止使用随机字符串作为我的<select>. 键应限制为Stooges.larry,Stooges.curlyStooges.moe

const Stooges = {
  larry: "Larry Fine",
  curly: "Curly Howard",
  moe: "Moe Howard"
};
Run Code Online (Sandbox Code Playgroud)

这是我选择的代码,它工作得很好:

<select value={stooge} onChange={handleChange}>
  {Object.keys(Stooges).map(key => (
    <option key={key} value={key}>
      {Stooges[key]}
    </option>
  ))}
</select>
Run Code Online (Sandbox Code Playgroud)

当我尝试设置下拉列表的初始值时出现问题 - 我必须使用硬编码键:

const [stooge, setStooge] = React.useState('larry');
Run Code Online (Sandbox Code Playgroud)

我可以通过选择第一个键来软化这一点:

const keys = Object.keys(Stooges);
const [stooge, setStooge] = React.useState(keys[0]);
Run Code Online (Sandbox Code Playgroud)

然而,这仍然感觉不对。我不知道key[0]我在挑选谁。

在这个用例中有没有更好的方法来处理枚举?我在 TypeScript 中尝试过字符串枚举,但它们有同样的问题:

enum Stooges {
  larry = "Larry Fine",
  curly = "Curly Howard",
  moe = "Moe Howard"
} …
Run Code Online (Sandbox Code Playgroud)

enums typescript reactjs

6
推荐指数
2
解决办法
6108
查看次数

如何使用 Chrome 开发工具调试 TypeScript 库?

我创建了一个 TypeScript 库,已使用以下结构发布到 npm:

mobx-state-router
|--- package.json
|--- src
|    `--- index.ts     (TypeScript source)
`--- dist
     |--- index.js     (compiled JavaScript)
     |--- index.js.map (sourcemap)
     `--- index.d.ts   (type definitions)
Run Code Online (Sandbox Code Playgroud)

然后,我通过添加依赖项在 React 应用程序中使用该库。在 Chrome 开发工具中调试我的 React 应用程序时,我想在我的库中添加断点。但是,Chrome 开发工具向我显示了源代码的编译版本,而不是原始的 TypeScript。我希望通过将 TypeScript 源代码和源映射包含在我的包中,Chrome 开发工具能够显示我的 TypeScript 文件。

  1. 是否可以以可以在依赖的 Web 应用程序中调试的方式捆绑 TypeScript 库?
  2. 如果不是,我是否应该将源代码和源映射捆绑在我的包中,从而减少包的大小?对此的最佳实践是什么?

google-chrome-devtools typescript reactjs npm-publish

6
推荐指数
0
解决办法
448
查看次数

在AWS上运行的Node.js性能下降

我正在使用Node.js在AWS上运行一个非常简单的RESTful API.API以'/ rest/users/jdoe'的形式接受请求并返回以下内容(它全部在内存中完成,不涉及数据库):

{
    username: 'jdoe',
    firstName: 'John',
    lastName: 'Doe'
}
Run Code Online (Sandbox Code Playgroud)

与本地网络相比,此API在Node.js + AWS上的性能非常糟糕 - 本地网络上仅有9个请求/秒,而2,214个请求/秒.AWS正在运行m1.medium实例,而本地节点服务器是具有Intel i7-950处理器的台式机.试图弄清楚为什么这么大的性能差异.

使用Apache Bench的基准测试如下:

本地网络

并发为100 /组的10,000个请求

> ab -n 10000 -c 100 http://192.168.1.100:8080/rest/users/jdoe

Document Path:          /rest/users/jdoe
Document Length:        70 bytes

Concurrency Level:      100
Time taken for tests:   4.516 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      2350000 bytes
HTML transferred:       700000 bytes
Requests per second:    2214.22 [#/sec] (mean)
Time per request:       45.163 [ms] (mean)
Time per request:       0.452 [ms] (mean, …
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 amazon-web-services node.js express

5
推荐指数
1
解决办法
3079
查看次数

Firebase仅邀请具有多个身份验证提供程序的方案

我有一个Firebase身份验证+实时数据库用例,我想通过邀请注册人员.初始用户创建将通过电子邮件和密码进行.将通过向用户发送包含其密码的电子邮件来邀请用户.此时用户可以使用他们的电子邮件和密码登录.但是,我想让他们选择使用提供商登录并将此帐户链接到他们的电子邮件/密码帐户.Firebase使这很容易.但是我的问题是,只要我打开提供程序身份验证,任何人都可以使用其提供程序凭据注册自己并访问可见的数据,以便仅邀请用户.如何防止这种情况?这种情况有更好的工作流程吗?

firebase firebase-authentication firebase-realtime-database

5
推荐指数
0
解决办法
244
查看次数

在React中创建的Select控件不会在浏览器刷新时重置(IE11和Edge)

我有一个非常简单的React应用程序,只有一个选择控件。在这里查看工作应用程序。选择控件具有3个值:星期日,星期一和星期二。星期日是默认值。不幸的是,在IE11和Microsoft Edge上,即使在刷新浏览器后,select控件也会停留在所选值上!例如,选择星期二,然后刷新浏览器-选择框不会返回到星期天,而是停留在星期二!在Chrome和Safari上,我没有看到此问题。(注意:您将必须在各种浏览器上下载并运行该应用程序。)

主要组件的代码如下所示。知道为什么IE和Edge行为异常吗?

import React from 'react';

class HelloWorld extends React.Component {

  constructor() {
    super();
    this.state = {
      selectedOption: 'sun'
    }
  }

  render() {
    let options = [
      { value: 'sun', label: 'Sunday'  },
      { value: 'mon', label: 'Monday'  },
      { value: 'tue', label: 'Tuesday' }
    ];

    return (
      <select
        className="form-control"
        value={this.state.selectedOption}
        onChange={ e => this.setState({selectedOption: e.target.value}) }>
        {
          options.map(option => {
            return <option value={option.value} key={option.value}>{option.label}</option>;
          })
        }
      </select>
    );
  }

}

export default HelloWorld;
Run Code Online (Sandbox Code Playgroud)

internet-explorer-11 reactjs microsoft-edge

5
推荐指数
1
解决办法
856
查看次数

React Router - 为不相关的路由指定父组件

我的React App中有3个页面以及以下路径:

  1. 登录 (/)
  2. 仪表板(/仪表板)
  3. 项目(/项目)

我希望仪表板和项目页面有一个标题,但登录页面不应该有任何标题.

目前路线看起来像这样:

<Router>
    <Route path="/" component={Login}>
    <Route path="/dashboard" component={Dashboard} />
    <Route path="/projects" component={Projects} />
</Router>
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为的组件Shell,它只提供标题.如何设置我的路由器,壳牌是父组件的DashboardProjects而不是Login页面?

编辑1

我想知道是否可以使用像这样的无路径父类来围绕子组件呈现Shell:

<Router>
    <Route path="/" component={Login}>
    <Route component={Shell}>
        <Route path="/dashboard" component={Dashboard} />
        <Route path="/projects" component={Projects} />
    </Route>
</Router>
Run Code Online (Sandbox Code Playgroud)

编辑2

刚试过上面的改变就行了!阅读文档,path不是必需的道具.所以在上面的代码<Route component={Shell}>是完全合法的.

reactjs react-router

5
推荐指数
1
解决办法
2699
查看次数